
def fib(num):
fibs=[0,1]
#num=input('请输入婓波那契数列中的数据个数:')
for i in range(int(num)-2):
fibs.append(fibs[-2]+fibs[-1])
print(fibs)
print(fibs[-2])
fib(10)
因为你的代码里每次递归调用fib都重新生成了memo
没有起到“备忘录”的作用
应该让memo定义在fib外,这样每次递归就可以利用之前已经计算过的结果了
具体代码如下所示:
def fib(n):
memo = [0 for x in range(n + 1)]
return helper(memo, n)
def helper(memo, n):
if memo[n] >0:
return memo[n]
if n <= 2:
memo[n] = 1
else:
memo[n] = helper(memo, n - 1) + helper(memo, n - 1)
return memo[n]
print(fib(100))
python3编译通过,fib(100)运行结果为:
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)