Python 求斐波那契数列前20项和

如题所述

定义:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)


方法一:用递归方法求出每一项

def fib1(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fib1(n - 1) + fib1(n - 2)
res = []
for i in range(21):
    res.append(fib1(i))
print res
print sum(res)


方法二:上面的方法,有很多重复计算,非常消耗性能,下面改进下:

known = {0: 0, 1: 1}
def fib2(n):
    if n in known:
        return known[n]
 
    res = fib2(n - 1) + fib2(n - 2)
    known[n] = res
    return res
res = []
for i in range(21):
    res.append(fib2(i))
print res
print sum(res)

追问

我要求前20项和

追答

最后的sum(res)就是求和。你自己跑下看看。你将range(21)改成range(20)。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-19
a=[]

a.append(1)

a.append(1)

b=2

for x in range(19):

a.append(a[b-1]+a[b-2])

b=b+1

print(a)
第2个回答  2020-07-07
a, b = 0 ,1

for _ in range(20):
a, b = b, a+b

print(a,' ')
相似回答