【发布时间】:2021-03-29 04:52:24
【问题描述】:
def howsum(target, array):
if target == 0:
return []
if target<0:
return None
for num in array:
remainder = target-num
sol = howsum(remainder, array)
if sol!=None:
return [num]+sol
return None
print(howsum(8,[5,3,2]))
print(howsum(7,[3,2]))
print(howsum(7,[2,4]))
print(howsum(7,[5,3,4,7]))
我在一个关于动态编程的视频中看到了这段代码。我对此代码的空间复杂性有疑问。在那个视频中提到程序的空间复杂度是 O(m),因为它调用了 m 次程序(递归)。但我怀疑每个函数调用在最坏的情况下都会返回一个大小为 m 的数组,不。在最坏的情况下,函数调用的数量将是 m,如果是这种情况,每个函数调用都应该使用大小为 m 的数组,那么空间复杂度将是 O(m) 而不是 O(m^2)。
请任何人帮助我。我是这个编程领域的新手。
【问题讨论】:
标签: python dynamic-programming