python编程求斐波那契数列前20项并输出(python求斐波那契数列前2
求助python大神。斐波那契数列,编写程序,利用列表计算斐波那契数列前30项,并以列表形式输出。
##缩进格式看图
l=[1,1]
for i in range(28):
l.append(l[-2]+l[-1])
print(l)

用Python输出斐波那契数列的前20项,要用递归和非递归两种方法?
?斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n=2,n∈N*)
用python求斐波数列的前20项
斐波拉契数列的通项公式:
第2n+1项是:
1/√5〔
(√5+1)2??1/2
+(√5-1)2??1/2〕
第2n项是:
1/√5〔
(√5+1)2?/2
-(√5-1)2?/2〕
(n=0,1,2,3……)
其实此数列的前20项还是用递推方式比较容易:
0,1,1,2,3,5,
8,13,21,34,55,89,144,233,
377,610,987,
1597,2584,4181。
C语言:编写程序用数组处理求解Fibonacci数列前20项之和并输出。
思路:先定义数组的前两项值,再依次对后面每项进行赋值,后面每项都是前两项的和。
例如:
#include
stdio.h
int
main(){
int
a[20],i;
a[0]=a[1]=1;
for(i=2;i20;i++)
a[i]=a[i-1]+a[i-2];
for(i=0;i20;i++){
printf("%4d
",a[i]);
if((i+1)%5==0)
printf("\n");
}
return
0;
}
/*
输出:
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
*/
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)