斐波那契数列(Fibonacci)最早由印度数学家Gopala提出,而第一个真正研究斐波那契数列的是意大利数学家 Leonardo Fibonacci,斐波那契数列的定义很简单,用数学函数可表示为:

数列从0和1开始,之后的数由前两个数相加而得出,例如斐波那契数列的前10个数是:0, 1, 1, 2, 3, 5, 8, 13, 21, 34。

用 Python 实现斐波那契数列常见的写法有三种,各算法的执行效率也有很大差别,在面试中也会偶尔会被问到,通常面试的时候不是让你简单的用递归写写就完了,还会问你时间复杂度怎样,空间复杂度怎样,有没有可改进的地方。

递归法

所谓递归就是指函数的定义中使用了函数自身的方法

def fib_recur(n):

assert n >= 0

if n in (0, 1):

return n

return fib_recur(n - 1) + fib_recur(n - 2)

for i in range(20):

print(fib_recur(i), end=" ")

>>> 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181

递归是一种代码最简洁的方法,但它是效率非常低,因为会出现大量的重复计算,时间复杂度是:O(1.618 ^ n),1.618是黄金分割。同时受限于 Python 中递归的最大深度是 1000,所以用递归来求解并不是一种可取的办法。

递推法

递推法就是从0和1开始,前

如何用python求斐波那契数列_如何使用Python实现斐波那契数列相关推荐

  1. 用循环实现斐波那契数列_剑指 Offer 10- I. 斐波那契数列

    剑指 Offer 10- I. 斐波那契数列 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F ...

  2. 数字拆分为斐波那契数列_检查数字是否为斐波那契

    数字拆分为斐波那契数列 Description: 描述: We are often used to generate Fibonacci numbers. But in this article, w ...

  3. 用python求两个人的平均身高_大学python题 求大佬解答!!!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 7-4 计算指数 (5 分) 真的没骗你,这道才是简单题 -- 对任意给定的不超过10的正整数n,要求你输出2n.不难吧? 输入格式: 输入在一行中给出一 ...

  4. python求合数的所有因子,0是素数吗(python求一个数的因子)

    相信很多人对于0是素数吗(python求一个数的因子)并不是非常的了解,因此小编在这里为您详解的讲解一下相关信息! 0和1不是质数,因为质数的定义是:在大于1的自然数中,除了1和它本身以外不再有其他因 ...

  5. python求两数之和的命令_数学建模:科学计算Python2小时-Python基础

    这一部分主要面向数模活动中的python基础知识进行讨论 作者 系列文章(科学计算Python2小时)目录:李似:科学计算Python2小时-前言与目录​zhuanlan.zhihu.com 首先要说 ...

  6. python爬取微信群聊内容_再不学Python 你就被同龄人甩开了吗?

    原创: 潘懿锟 唐佩瑶 清华大学(分数线,专业设置)清新时报 记者 | 潘懿锟 唐佩瑶 "会Python的人,工作都不会太差.追上同龄人,就趁现在!" 或许你已经对微信的广告推送感 ...

  7. python游戏中调整箭头下落速度_入门 | 三行Python代码,让数据预处理速度提高2到6倍...

    原标题:入门 | 三行Python代码,让数据预处理速度提高2到6倍 选自TowardsDataScience 作者:George Seif,机器之心编译 在 Python 中,我们可以找到原生的并行 ...

  8. python中文名的发件人邮件读取解析_如何使用python收取读取邮件?

    之前给大家介绍使用python去发送邮件了,那有小伙伴提出疑问了,既然能发送,能否读取呢?如果可以用python实现,那将是个非常有趣的事情,于是小编也去查询了下,下面就给大家演示下,都来看看吧~以下 ...

  9. python入门之函数调用内置函数_第九篇 python基础之函数,递归,内置函数

    阅读目录 一 数学定义的函数与python中的函数 二 为何使用函数 背景提要 三 函数和过程 四 函数参数 五 局部变量和全局变量 六 前向引用之'函数即变量' 七 嵌套函数和作用域 八 递归调用 ...

  10. python queue模块安装_Python queue包_程序模块 - PyPI - Python中文网

    沃特?另一个消息队列? 考虑到消息队列的激增,人们可能倾向于相信 发明更多不是答案.使用现有的解决方案是 多次尝试与大多数现有的消息队列产品. 其他的失败(对于我们的用例). queuey是用来处理大 ...

最新文章

  1. 文件上传的渐进式增强
  2. python实验过程心得体会_20192416 实验四《Python程序设计》综合实践报告
  3. HTML/CSS——PC端博文尚美网页
  4. 深入浅出SQL(三)——表的规范化
  5. java翻转字符串中的单词
  6. Ubuntu 16.zabbixserver服务报错: Assuming that agent dropped connection because of access permissions.
  7. Ubuntu 15.10系统安装后要做的15件事
  8. LeetCode刷题——63. 不同路径 II
  9. TypeScript:运算符
  10. Redis 官方推出可视化工具,颜值爆表,功能真心强大!这是不给其他工具活路啊!...
  11. 服务器e5v2v3性能差距,服务器CPU中的E3、E5的区别,及V2、V3、V5的区别
  12. Azure云服务器初学习
  13. 【TJOI2019】唱、跳、rap和篮球(DP)(容斥)
  14. DNF游戏三方制裁解决方案(亲测有效)虚拟机
  15. 2019级软件工程应用与实践-人工智能快递柜(代码分析9)
  16. 初探TweenMax 动画
  17. 央视 315 晚会曝光数据泄露
  18. Ubuntu16.04系统迁移SSD
  19. 学姐学长讲座的总结收获
  20. 每日一遍,包教包会,幼儿园千万别错过

热门文章

  1. ae等高线_AE插件-地形海拔轮廓等高线动画 Topograph v1.0 Win/Mac + 视频教程
  2. 移动开发作业:三种近场通信技术的特点及对其未来应用场景的分析预测
  3. webpack——webpack与浏览器缓存(十六)
  4. 人生第一次之首都图书馆
  5. MySQL(最全的MySQL基础版,代码版)
  6. sleep和wait的区别
  7. 机器学习中的聚类算法
  8. 时间序列 :ARIMA模型-原理
  9. 武汉大学计算机技术VB试题,武汉大学VB考试题库.doc
  10. 第一讲 OSG编译 认识OSG