您的位置:首页 > 编程语言 > Python开发

分别用的列表,递归,生成器三种方式创建出n个元素的斐波那契数列(Python3实现)

2017-03-28 01:18 941 查看

费波那契数列意大利语:Successione di Fibonacci),又译为费波拿契数斐波那契数列费氏数列黄金分割数列

数学上,费波那契数列是以递归的方法来定义:

{\displaystyle F_{0}=0}


{\displaystyle F_{1}=1}


{\displaystyle F_{n}=F_{n-1}+F_{n-2}}

(n≧2)

用文字来说,就是费波那契数列由0和1开始,之后的费波那契系数就是由之前的两数相加而得出。首几个费波那契系数是:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233……(OEIS中的数列A000045

特别指出0不是第一项,而是第零项。



1 #!/usr/bin/python3
2 #_*_coding:utf-8_*_
3
4 #非递归的方式生成长度为n的斐波那契数列
5 def createFib1 (n) :
6     L = [0] ;
7     i , a , b = 0 , 0 , 1 ;
8     while i < n :
9         L.append (b) ;
10         a , b = b , a + b ;
11         i = i + 1 ;
12     return L ;
13
14 #递归的方式生成斐波那契数列中的第n个元素
15 def fib2 (n) :
16     if n <= 0 :
17         return 0 ;
18     elif n <= 2 :
19         return 1 ;
20     else :
21         return fib2(n-1) + fib2(n-2)
22
23 #调用递归函数生成斐波那契数列
24 def createFib2 (n) :
25     L = [] ;
26     i = 0 ;
27     while i <= n :
28         L.append (fib2(i)) ;
29         i = i + 1 ;
30     return L ;
31
32 #generator的方法逐个生成斐波那契数列中的元素
33 def fib3 (n) :
34     yield 0 ;
35     i , a , b = 0 , 0 , 1 ;
36     while i < n :
37         yield b ;
38         a , b = b , a + b ;
39         i = i + 1 ;
40
41 #调用生成器函数生成斐波那契数列
42 def createFib3 (n) :
43     L = [] ;
44     for i in fib3(n) :
45         L.append (i) ;
46     return L ;
47
48 #主函数
49 def main () :
50     n = int(input("生成长度为n的斐波那契数列:")) ;
51     print ("fib1:") ;
52     print (createFib1(n)) ;
53     print ("fib2:") ;
54     print (createFib2(n)) ;
55     print ("fib3:") ;
56     print (createFib3(n)) ;
57
58 if __name__ == '__main__' :
59     main()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: