python输出斐波那契数列的前20项(python输出斐波那契数列的前20

http://www.itjxue.com  2023-03-06 20:26  来源:未知  点击次数: 

用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递归求斐波那契数列前10项

你好,很高兴为你解答。根据斐波那契数列F(n)=F(n-1)+F(n-2),当n=1和n=2时,F(n)=1,可以利用函数+if分支结构编写递归程序,求出斐波那契数列前10项。具体代码如下:

求斐波那契数列前10项

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)

python求Fibonacci数列的前30项每一行语句都要添加注释。

def diGui(n, c, result, temp):#定义递归函数

if c != 1:#运算

temp = result - temp#进行运算

result += temp#进行运算

if n == 1:#如果次数为1直接返回

return str(result)#返回字符串的result

return str(result) + ' , ' + diGui(n - 1, c + 1, result, temp)#都不为以上结果则返回

print("斐波那契数列到第{}个的结果是:1 , {}".format(30, diGui(29, 1, 1, 0)))#输出结果

使用数组求Fibonacci数列的前20项。要求4项一行输出。

斐波那契数列通项公式:斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、……这个数列从第三项开始,每一项都等于前两项之和。

#includestdio.h

int main()

{

int a[20]={1,1},i=2;

printf("a[0]=a[1]=");

for(i=2;i20;i++)

{

a[i]=a[i-1]+a[i-2];

// a[i-2]=a[i-1]; 这两行是多余的

// a[i-1]=a[i];

if(i%4==0)

printf("\n");

printf("a[%d]=%d ",i,a[i]);//加了格式说明符以及空格。

}

return 0;

}

这样写可以不?

(责任编辑:IT教学网)

更多

推荐Painter教程文章