Fibonacci数列为:0、1、1、2、3、5、8、13、21......
数列第一项为0,第二项为1,从第三项开始,每一项为相邻前两项之和。
用递归的方法来定义:
- F(0) = 0
- F(1) = 1
- F(n) = F(n-1) + F(n-2) , n>=2
用递归方法实现代码:
- # python 3.4
- x = int ( input ("输入一个数:") )
- def fibonacci ( n ) :
- if n == 0 :
- return 0
- elif n == 1 :
- return 1
- else :
- return fibonacci( n - 1 ) + fibonacci( n - 2 )
- for i in range ( 0 , x ) :
- print(fibonacci(i))
用非递归方法实现代码:
- # python 3.4
- x = int ( input ("输入一个数:") )
- a, b = 0, 1
- for i in range(0 , x ):
- print (a)
- a, b = b, a + b
使用generator实现代码:
- # python 3.4
- x = int ( input ("输入一个数:") )
- def fib():
- a, b = 0, 1
- for i in range(0 , x ):
- yield a
- a, b = b, a + b
- print( list(fib(x) )
使用itertools + generator 实现代码
import itertools as it
num_iterations = int(raw_input('How many? '))
def fib():
a,b = 0,1
while True:
yield a
b = a+b
yield b
a = a+b
for x in it.islice(fib(), num_iterations):
print x