斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列、费波那西数列、费波拿契数、费氏数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=Fn-1+Fn-2(n>=2,n∈N*),用文字来说,就是斐波那契数列列由 0 和 1 开始,之后的斐波那契数列系数就由之前的两数相加。
1,通过递归的方式实现,效率很低
In [25]: def fib(n):
...: if n == 0:
...: return 0
...: if n ==1:
...: return 1
...: else:
...: return fib(n-1) + fib(n-2)
...:
In [26]: fib(5)
Out[26]: 5
In [27]: fib(10)
Out[27]: 55
2,通过for 循环的方式实现
In [15]: def fib(n):
...: a,b = 0,1
...: for i in range(n):
...: a,b = b,a+b
...: return a
In [22]: def fib(n):
...: a,b = 0,1
...: lst = []
...: for i in range(n):
...: lst.append(a)
...: a,b = b,a+b
...: return lst
3,通过生成器的方式实现
In [7]: def fib(n):
...: a,b = 0,1
...: for i in range(n):
...: yield a
...: a,b = b,a+b
In [9]: for x in fib(10):
...: print(x)
...:
0
1
1
2
3
5
8
13
21
34