我是编程新手,并试图使用基本的 Python 在 Project Euler 上 解决这个问题。
本质上,我尝试使用基于在每个阶段选择的最大值的递归,并使用列表来维护未来选择的可能选项。
代码很短,如下所示:
def func(n,l):
if n<0:
return 0
if l==[1] or n==0:
return 1
else:
j=0
while l != []:
j=j+func(n-l[0],l)
del l[0]
return j
print func(200,[200,100,50,20,10,5,2,1])
例如,如果我们有
func(5,[5,2,1])
递归将其拆分为
func(0,[5,2,1]) + func(3,[2,1]) + func(4,[1])
但是代码似乎永远不会通过。它要么说有list-index-out-of-range
错误,要么说有maximum-recursion-depth
错误(即使对于非常小的玩具实例)。我找不到错误。任何帮助都感激不尽。