zoukankan      html  css  js  c++  java
  • python_斐波那契数列

    什么是斐波那契数列?

      -- 一组第从第三个值开始,每个值都等于前两个值之和的一种有意思的数列

          如[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

    如何用程序进行实现?

      -- 逻辑整理

        初始值n_1 = 1, n_2 = 1

        n_3 = n_1 + n_2

        第三个值开始,每个值都是前两个值之和,假如n_1 = n_2 ,n_2 = n_3,

        实现了整体 n_1, n_2往后移动一个数,也就是说,现在的n_1 +n_2 等价于 n_2 + n_3

        其结果虽然给n_3接收,但是n_3本质上是第四个数了,不妨后面的数都是如此,嘉祥n_3无限往后移

        n_3 可以代替任何后面的数

      -- 程序化:

    #!/usr/bin/python3
    
    __author__ = 'beimenchuixue'
    __blog__ = 'http://www.cnblogs.com/2bjiujiu/'
    
    
    def fab(n):
        list_fab = []               # 定义接收fab值列表
        n_1, n_2 = 1, 1             # 定义初始值 n_1=1,n_2=1
        list_fab.append(n_1)        # 把两个初始值加入到fab值列表
        list_fab.append(n_2)
    
        for i in range(n-2):        # 按输入要求几个减去2,因为有两个初始值
            n_3 = n_1 + n_2         # 第三个值 = 前两个值之和
            list_fab.append(n_3)    # 把加起来的值加入到fab值列表
    
            n_1, n_2 = n_2, n_3     # n_1和n_2同步往后移一位
    
        return list_fab             # 返回结果
    
    if __name__ == '__main__':
        result = fab(10)                # 接收结果
        print(result, len(result))

      这个实现的是正向推导,没有实现子问题划分——从后面推导,想看?看我下一个递归篇

  • 相关阅读:
    cocos2dx A* + tiledMap
    cocos2dx A*算法
    A*算法
    在VS2012中使用GitHub
    史上最全设计模式导学目录(完整版)
    IT之家
    各种与视频编解码以及视频图像处理的应用相关的新技术,新方法,各种软件开发相关的算法,思想。
    linux下vim命令详解
    两篇很牛的vim使用技巧
    (转)linux下导入、导出mysql数据库命令
  • 原文地址:https://www.cnblogs.com/2bjiujiu/p/6686111.html
Copyright © 2011-2022 走看看