python编程,斐波那契数列?

python编程,斐波那契数列?,第1张

婓波那契数列(前两个数的和是第三个数)

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)运行结果为:


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11740429.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存