Recursion 如何将带有for循环的函数更改为递归函数?
我想把这个函数变成一个递归函数,使用相同的参数。 原始代码将给定的变化(这里的3,99是399)转换为一个元组列表,其中列出了要使用哪些硬币来达到这个数量Recursion 如何将带有for循环的函数更改为递归函数?,recursion,Recursion,我想把这个函数变成一个递归函数,使用相同的参数。 原始代码将给定的变化(这里的3,99是399)转换为一个元组列表,其中列出了要使用哪些硬币来达到这个数量 def make_change(amount): M=[200,100,50,20,10,5,2,1] W=[] for i in range (len(M)): m=0 if amount>=(2*M[i]): amount=amount-(2*M[i])
def make_change(amount):
M=[200,100,50,20,10,5,2,1]
W=[]
for i in range (len(M)):
m=0
if amount>=(2*M[i]):
amount=amount-(2*M[i])
m+=2
W.append((M[i],m))
if amount>=M[i]:
amount=amount-M[i]
m+=1
W.append((M[i],m))
return W
print make_change(238)
这符合你的要求吗
def更改(金额):
def sub(金额、硬币):
如果是硬币:
硬币=硬币[0]
nb_硬币=数量/硬币
如果是nb_硬币:
返回[(硬币,nb_硬币)]+sub(金额硬币*nb_硬币,硬币[1:])
其他:
返回子项(硬币数量*nb_硬币,硬币[1:])
其他:
返回[]
返回子项(金额[200100,50,20,10,5,2,1])
测试:
>打印更改(238)
[(200, 1), (20, 1), (10, 1), (5, 1), (2, 1), (1, 1)]
这是否符合您的要求
def更改(金额):
def sub(金额、硬币):
如果是硬币:
硬币=硬币[0]
nb_硬币=数量/硬币
如果是nb_硬币:
返回[(硬币,nb_硬币)]+sub(金额硬币*nb_硬币,硬币[1:])
其他:
返回子项(硬币数量*nb_硬币,硬币[1:])
其他:
返回[]
返回子项(金额[200100,50,20,10,5,2,1])
测试:
>打印更改(238)
[(200, 1), (20, 1), (10, 1), (5, 1), (2, 1), (1, 1)]
对于递归函数,必须将make_change
方法调用放在其中一个if
语句的内部递归性的要点是有一个控制语句,在需要时将调用该方法。检查,但在这种情况下,我仍然需要在M上循环,对吗?即使在递归函数中,我也不理解。据我所知,你的代码是有效的。你需要递归的原因是什么?对于递归函数,你必须把make\u change
方法调用放在if
语句中。递归的要点是有一个控制语句,在需要时调用该方法。检查,但在这种情况下,我仍然需要在M上循环,对吗?即使在递归函数中,我也不理解。据我所知,你的代码是有效的。你需要什么递归性?如果这个答案已经解决了你的问题,请通过点击复选标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。如果这个答案已经解决了你的问题,请通过点击复选标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。