python编程求斐波那契数列前20项并输出(python求斐波那契数列前2

http://www.itjxue.com  2023-03-05 07:23  来源:未知  点击次数: 

求助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)

(责任编辑:IT教学网)

更多

推荐免费资源文章