python输出斐波那契数列的前20项(python输出斐波那契数列的前20
用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;
}
这样写可以不?