我正在看一段动态编程视频。但是,我的代码的备忘录不起作用。当我打印(备忘录)时,它没有存储任何真/假。它是空白的。请告知
def cansum(targetsum,numbers):
memo = dict()
print(memo)
# check in memory
if targetsum in memo:
return memo[targetsum]
if targetsum < 0: return False
if targetsum == 0: return True
for number in numbers:
remainder = targetsum - number
if cansum(remainder,numbers) == True:
memo[targetsum] = True
return True
memo[targetsum] = False
return False
print(cansum(7,[2,3])) #True
print(cansum(7,[5,3,4,7])) #True
我想这就是你可能想要做的:
如果你把
在递归函数中,您为每个递归函数创建一个dict,一旦设置了memo,就会出现return语句,因此您将无法看到更改。但其目的是,您只需要一个dict就可以完成整个功能
相关问题 更多 >
编程相关推荐