1.  斐波那契数列

序号

0

1

2

3

4

5

6...

数列

0

1

1

2

3

5

8...

2.  三种程序

import time

time1 = time.clock()

#斐波那契数列

# 1.递归

def fibo1(n):

if n == 0 or n == 1:

return n

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

print(fibo1(6)) # 8

time2 = time.clock()

# 2.带备忘录的递归

def fibo2(n):

r = [0]*(n+1)

def fib(n, r):

if r[n] != 0:

return r[n]

if n <= 2:

r[n] = 1

else:

r[n] = fib(n-1, r)+fib(n-2, r)

return r[n]

return fib(n,r)

print(fibo2(6)) # 8

time3 = time.clock()

# 3.自底向上

def fibo3(n):

f0 = 0

f1 = 1

if n==0 or n == 1 :

return n

for i in range(n-1):

f0, f1 = f1, f0+f1

return f1

print(fibo3(6)) # 8

time4 = time.clock()

print(time4-time3, time3-time2, time2-time1)

# 9.473442388444293e-06 1.3420710050296084e-05 3.434122865811057e-05

# 三种方法时间比较

#方法3 所用的时间最短,方法2(具有备忘录的递归)时间 次之 方法1(递归)时间最长

3. 求n=3的斐波那契数列的递归过程图

斐波那契数列python递归 0、1、1、2、3_python: 递归和递推方法求斐波那契数列相关推荐

  1. 自定义函数fac1用递推方法求n!,自定义函数fac2用递归方法求n!,主函数中输入整数n(0≦n≦10)后,分别调用函数fac1和函数fac2求n!,最后输出调用的结果值进行对比。

    自定义函数fac1用递推方法求n!,自定义函数fac2用递归方法求n!,主函数中输入整数n(0≦n≦10)后,分别调用函数fac1和函数fac2求n!,最后输出调用的结果值进行对比. 参考运行截图: ...

  2. 【君义精讲】多种方法求斐波那契数列

    概念 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列&q ...

  3. 递推法:斐波那契数列java

    在不使用递归和公式法的情况下,求斐波那契数列,使用递推法,极大降低时间复杂度 public class Fei {public static void main(String[] args) {// ...

  4. c语言编程斐波那契前n项,c语言:写一个函数,输入n,求斐波拉契数列的第n项(5种方法,层层优化)...

    写一个函数,输入n,求斐波拉契数列的第n项. 斐波拉契数列:1,1,2,3,5,8...,当n大于等于3时,后一项为前面两项之和. 解:方法1:从斐波拉契数列的函数定义角度编程 #include in ...

  5. 递推法输出斐波拉契数列

    #include<stdio.h> int main() {int f[21],i;f[1]=1;f[2]=1;for(i=3;i<21;i++)f[i]=f[i-1]+f[i-2] ...

  6. 利用线性代数的方法求斐波那契数列的通项

    由于word编辑的公式打出来全是黑的,所以只能贴图咯.下次换个编辑器. 转载于:https://www.cnblogs.com/maplewizard/archive/2013/03/10/29526 ...

  7. 递归、递推法斐波那契数列

    编写2个函数,分别采用递归和递推方法计算斐波那契数列的前n项,函数返回列表,该列表中存放斐波那契数列,并写出程序调用这2个函数,输出斐波那契数列. #递归方法 def fib1 (n): if n & ...

  8. 利用一维数组求菲波那契数列前40项的和并输出结果。_[W2D2]斐波那契数列

    题目链接:斐波那契数列 - 题目 - 青藤 OJ 题目来源:经典题 题目大意 输入 ,输出 0,1 开头的斐波那契数列的第 n 项. 这里我们不讨论递推方法,我们采用这道简单的题目简单说一下记忆化搜索 ...

  9. 三种方法求递归算法的时间复杂度(递推,master定理,递归树)

    三种方法: 递推方法求递归算法的时间复杂性 Master定理方法求递归算法时间复杂性 递归树求解递归方程 1.递推方法求递归算法的时间复杂度 我们先来看一个经典的案例,汉诺塔问题 汉诺塔(Hanoi ...

最新文章

  1. Adapter pattern
  2. Scala模式匹配细节说明
  3. mqtt服务器性能H3,运用 MQTT-JMeter 插件测试 MQTT 服务器性能
  4. 关于常用meta的总结
  5. HTML中小meta的大作用
  6. Spring MVC 实践 - Component
  7. 用TensorFlow的Linear/DNNRegrressor预测数据
  8. ftp 服务器的目录文件,ftp服务器中文件目录下
  9. ARX助手最新版适配多版本
  10. 字节跳动Java工资待遇等级_字节跳动面试题:你的平均薪水是多少?
  11. Unity 将3D物体的世界坐标转换为对应的屏幕坐标
  12. Python地理数据处理 四:矢量数据读写(二)
  13. 男人和女人是怎样吹牛的
  14. 关于PEM, DER, CRT, CER,KEY等各类证书与密钥文件后缀的解释
  15. 基于linux的在线英汉词典(带源码)
  16. oracle期间平均成本,小李飞刀系列之Oracle EBS期间平均成本(PAC)--生产成本计算(四)制造费用设置及成本计算...
  17. 577,反转字符串中的单词
  18. 图论(6)树的概念,中心与形心
  19. 关于邮件中的encoded-word的解析
  20. lucene和solr第二篇

热门文章

  1. go mod拉取git私有仓库配置方法
  2. linux截图快捷键
  3. arthas jvm相关命令使用示例:sysenv、getstatic、vmoption、ognl
  4. Linux vim光标快速移动指定行数G
  5. 多级缓存中的一级缓存全网流量分发CDN
  6. 深入浅出Paxos分布式一致性算法
  7. Qt for Python Mac下使用 fbs 打包软件
  8. Mac下PyCharm CE 配置PyQt5环境
  9. 平滑均值滤波讲解-Matlab
  10. Ubuntu关闭anaconda自动进入base虚拟环境