Python程序借助两种方法来计算斐波那契数列的第n个项 (有许多方法可以计算第n个项)。

描述:

第一种方法:动态编程

在这种方法中,我们计算出斐波那契数列直到n的所有项,如果我们需要计算小于n的任何其他项,则不必再次计算。

第二种方法:按公式

在这种方法中,我们借助公式计算斐波纳契数列的第n个项。

Formula:
    phi = ( 1 + sqrt(5) ) / 2
    An = phin/ sqrt(5)

例:

Input:for n = 5for n = 8
    Output:
    a5 = 5
    a8 = 21

过程:动态编程方法

L[0] = 0, L[1] = 1
    For loop from 2 to n+1
        L[i] = L[i-1] + L[i -2]
    End of for

如您所见,我们还存储了每个计算所得的值,因此以后也可以在必要时使用它们。

这是动态编程优于递归的优势。

Python代码可计算斐波那契数列的第n个项

def dynamic_fibonacci(n):'''
    This function will calculate fobonacci
    series with the help of dynamic
    programming.
    '''
    l = [0]*(n+1)
    l[0] = 0
    l[1] = 1for i in range(2, n+1):
        l[i] = l[i-1] + l[i-2]return l # Time complexity O(n)def fibonacci_by_formula(n):'''
     This function will calculate n-th
    term of fibonacci series with the
    help of a formula.
    '''from math import sqrt
    phi = (1 + sqrt(5))/2
    fib = round(pow(phi, n)/sqrt(5))return fib# Time complexity O(1)def main():
    n = 8
    lst = dynamic_fibonacci(n)
    x = fibonacci_by_formula(n)
    print('By Dynamic Programming:',lst[n])
    print()
    print('By Formula:',x)
main()def dynamic_fibonacci(n):'''
    This function will calculate fobonacci
    series with the help of dynamic
    programming.
    '''
    l = [0]*(n+1)
    l[0] = 0
    l[1] = 1for i in range(2, n+1):
        l[i] = l[i-1] + l[i-2]return l# Time complexity O(n)def fibonacci_by_formula(n):'''
    This function will calculate n-th
    term of fibonacci series with the
    help of a formula.
    '''from math import sqrt
    phi = (1 + sqrt(5))/2
    fib = round(pow(phi, n)/sqrt(5))return fib# Time complexity O(1) def main():
    n = 8
    lst = dynamic_fibonacci(n)
    x = fibonacci_by_formula(n)
    print('By Dynamic Programming:',lst[n])
    print()
    print('By Formula:',x)
main()

输出量

By Dynamic Programming: 21
By Formula: 21

翻译自: https://www.includehelp.com/python/program-to-calculate-n-th-term-fibonacci-series.aspx

推荐阅读--

每日一课 | 读取浮点数

每日一课 | Python循环列表

每日一课 | JavaScript设置视频播放速度

每日一课 | Java程序对字符串列表进行排序

每日一课 | Java阶乘程序

球分享

球点赞

球在看

循环斐波那契数列_每日一课 | 斐波那契数列的第n个项相关推荐

  1. byte转换为string乱码_每日一课 | 如何将int转换为String

    在Python中,我们可以使用str()将int转换为String. num1 = 100print(type(num1)) # 'int'> num2 = str(num1) print(ty ...

  2. python编写递归函数、求斐波那契数列_利用Python实现斐波那契数列的方法实例

    今天我们来使用Python实现递归算法求指定位数的斐波那契数列 首先我们得知道斐波那契数列是什么? 斐波那契数列又叫兔子数列 斐波那契数列就是一个数列从第三项开始第三项的值是第一项和第二项的和依次类推 ...

  3. 1235813找规律第100个数_每日一课:奥数知识点 —— 找简单数列的规律

    日常生活中,我们经常接触到许多按一定顺序排列的数,如:自然数:1,2,3,4,5,6,7,- (1)年份:1990,1991,1992,1993,1994,1995,1996 (2)某年级各班的学生人 ...

  4. linux 如何让.开头的文件不隐藏_每日一课 | Linux:如何gzip文件夹

    整理 | Python大本营在Linux上, gzip无法压缩文件夹,它仅用于压缩单个文件.要压缩文件夹,您应该使用tar + gzip,它是tar -z.注意 $ tar --help -z, -j ...

  5. python将列表转换为字符串_每日一课 | Python将文件读入列表

    读取日志文件的Python示例,一行一行地进入列表. # With '\n', ['1\n', '2\n', '3'] with open('/www/logs/server.log') as f: ...

  6. android 判断文件是否存在_每日一课 | Python检查文件是否存在

    在Python中,我们可以使用os.path.isfile()或pathlib.Path.is_file()(Python 3.4)来检查文件是否存在.1. pathlibPython 3.4的新功能 ...

  7. python 声明变量类型_每日一课 | Python 检查变量的类型

    在Python中,我们可以使用type()来检查变量的类型. num = "3.141592653589793238"print(type(num)) pi = float(num ...

  8. 字节数组转换为图片_每日一课 | Python 3 TypeError:无法将“字节”对象隐式转换为str...

    将Python 2套接字示例转换为Python 3 whois.py import sysimport socket s = socket.socket(socket.AF_INET, socket. ...

  9. 循环斐波那契数列_第五课:斐波那契数列(第一课时)

    简介:又称黄金分割数列.因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为"兔子数列",指的是这样一个数列:1.1.2.3.5.8.13.21.34--在数学上,斐波那契数 ...

最新文章

  1. 原型开发、模型构建和设计反馈在线工具
  2. 华北电力大学计算机导论试题,保定华北电力大学计算机与科学大一课程
  3. 一个c语言构造函数调用的问题(有趣)
  4. oracle中序列号的使用
  5. 两款【linux字符界面下】显示【菜单】,【选项】的powershell脚本模块介绍
  6. 将一串随机数输入到二维坐标轴中,不断刷新JPanel,实现动态显示的效果微笑
  7. 解决Ubuntu 9.04无线网络的不稳定问题-转
  8. 浅谈C#的垃圾回收-关于GC、析构函数、Dispose、and Finalize asp.net GC之析构函数详解...
  9. Java基础:接口多态的综合案例 —— 笔记本电脑
  10. pandas数据处理、绘图
  11. Java从入门到精通 第5章 数据类型
  12. Algorithm:数学建模大赛(CUMCM/NPMCM)之05A《长江水质综合评价与预测》
  13. Netty高性能之道 1
  14. PageObject(PO)设计模式在 UI 自动化中的实践总结(以 QQ 邮箱登陆为例)
  15. 杭电信工计算机系编程比赛集训队,【喜讯】我院学子勇夺首届大湾区青少年信息学编程竞赛冠军...
  16. php上传公众号临时素材-微信开发素材管理6
  17. 障碍期权定价 python_Python王牌加速库2:深度学习下的障碍期权定价
  18. mellanox网卡驱动安装和温度检查
  19. k2虚拟服务器功能,配置图形加速的View虚拟桌面-NVIDIA GRID K2使用指南
  20. 场景文本检测论文阅读时间线

热门文章

  1. C++中,float double区别
  2. mysql 函数怎样创建_mysql里怎样创建函数
  3. 信息学奥赛一本通(2064:【例2.1】交换值)
  4. 数列分块入门 8(LibreOj-6284)
  5. 11(AtCoder-2649)
  6. 骑车与走路(信息学奥赛一本通-T1050)
  7. 35 CO配置-控制-产品成本控制-成本对象控制-期末结算-定义在产品和废品的评估变式 (目标成本)
  8. mysql安装权限_mysql 新安装时的权限
  9. 查看openssh版本_OpenSSH命令注入漏洞复现(CVE202015778)
  10. 一起学习C语言:函数(三)