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

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

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

    • {displaystyle F_{0}=0}F_{0}=0
    • {displaystyle F_{1}=1}F_{1}=1
    • {displaystyle F_{n}=F_{n-1}+F_{n-2}}F_{n}=F_{{n-1}}+F_{{n-2}}(n≧2)

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

    01123581321345589144233……(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()
  • 相关阅读:
    Python3.5.2官方文档学习备忘录
    Linux下升级python版本
    役物,役于物
    各种编辑器添加注释快捷键
    Python3爬取百度百科(配合PHP)
    Python3向网页POST数据
    Python3爬取中文网址
    Python3批量爬取网页图片
    django中间件
    django创建上下文
  • 原文地址:https://www.cnblogs.com/maoguy/p/6629651.html
Copyright © 2011-2022 走看看