问题:我们有3种硬币(1美元,2美元,5美元),我们将有这些硬币的混合物,以赚取1000美元;我们想要 使用这些硬币创建1000美元的所有可能方法的数量,并且我们还需要打印每种可能的方式递归解决方案?
我刚才写下面的代码为非递归风格的硬币问题,它是好好工作。 现在我需要WITE做同样的事情递归函数,但我只是想不出 我的递归function.any的想法基本情况写一个递归函数?
i=0
for x in range(1001):
for y in range(501):
for z in range(201):
if x + 2*y + 5*z == 1000:
print(" {} coin $1 , {} coin $2 , {} coin $5".format(x,y,z))
i+=1
print("number of possibilities",i)
在每次递归时,您都会从要生成的总数中减去要添加到混合物中的硬币的值。基本情况是当总数为0. – Barmar
对于非递归解决方案,您不需要'z'循环。计算'ZZ = 1000-(X + 2 * Y)',并检查是否zz''是由5整除如果是这样,则必须以Z = ZZ/5'的溶液。 – Steve314
BTW - 递归解决方案将受益于记忆化,或者你可以使用表格/动态规划的选择 - 无论哪种方式,以改善不考虑不同的方式来达到同样的硬币计数的性能 - 显然,如果你选择,然后A $ 1 $ 2 ,这相当于选择了2美元,然后是1美元。如果你不知道memoization或动态编程,但不要担心。 – Steve314