斐波那契数列python递归 0、1、1、2、3_python: 递归和递推方法求斐波那契数列
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: 递归和递推方法求斐波那契数列相关推荐
- 自定义函数fac1用递推方法求n!,自定义函数fac2用递归方法求n!,主函数中输入整数n(0≦n≦10)后,分别调用函数fac1和函数fac2求n!,最后输出调用的结果值进行对比。
自定义函数fac1用递推方法求n!,自定义函数fac2用递归方法求n!,主函数中输入整数n(0≦n≦10)后,分别调用函数fac1和函数fac2求n!,最后输出调用的结果值进行对比. 参考运行截图: ...
- 【君义精讲】多种方法求斐波那契数列
概念 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列&q ...
- 递推法:斐波那契数列java
在不使用递归和公式法的情况下,求斐波那契数列,使用递推法,极大降低时间复杂度 public class Fei {public static void main(String[] args) {// ...
- c语言编程斐波那契前n项,c语言:写一个函数,输入n,求斐波拉契数列的第n项(5种方法,层层优化)...
写一个函数,输入n,求斐波拉契数列的第n项. 斐波拉契数列:1,1,2,3,5,8...,当n大于等于3时,后一项为前面两项之和. 解:方法1:从斐波拉契数列的函数定义角度编程 #include in ...
- 递推法输出斐波拉契数列
#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] ...
- 利用线性代数的方法求斐波那契数列的通项
由于word编辑的公式打出来全是黑的,所以只能贴图咯.下次换个编辑器. 转载于:https://www.cnblogs.com/maplewizard/archive/2013/03/10/29526 ...
- 递归、递推法斐波那契数列
编写2个函数,分别采用递归和递推方法计算斐波那契数列的前n项,函数返回列表,该列表中存放斐波那契数列,并写出程序调用这2个函数,输出斐波那契数列. #递归方法 def fib1 (n): if n & ...
- 利用一维数组求菲波那契数列前40项的和并输出结果。_[W2D2]斐波那契数列
题目链接:斐波那契数列 - 题目 - 青藤 OJ 题目来源:经典题 题目大意 输入 ,输出 0,1 开头的斐波那契数列的第 n 项. 这里我们不讨论递推方法,我们采用这道简单的题目简单说一下记忆化搜索 ...
- 三种方法求递归算法的时间复杂度(递推,master定理,递归树)
三种方法: 递推方法求递归算法的时间复杂性 Master定理方法求递归算法时间复杂性 递归树求解递归方程 1.递推方法求递归算法的时间复杂度 我们先来看一个经典的案例,汉诺塔问题 汉诺塔(Hanoi ...
最新文章
- Adapter pattern
- Scala模式匹配细节说明
- mqtt服务器性能H3,运用 MQTT-JMeter 插件测试 MQTT 服务器性能
- 关于常用meta的总结
- HTML中小meta的大作用
- Spring MVC 实践 - Component
- 用TensorFlow的Linear/DNNRegrressor预测数据
- ftp 服务器的目录文件,ftp服务器中文件目录下
- ARX助手最新版适配多版本
- 字节跳动Java工资待遇等级_字节跳动面试题:你的平均薪水是多少?
- Unity 将3D物体的世界坐标转换为对应的屏幕坐标
- Python地理数据处理 四:矢量数据读写(二)
- 男人和女人是怎样吹牛的
- 关于PEM, DER, CRT, CER,KEY等各类证书与密钥文件后缀的解释
- 基于linux的在线英汉词典(带源码)
- oracle期间平均成本,小李飞刀系列之Oracle EBS期间平均成本(PAC)--生产成本计算(四)制造费用设置及成本计算...
- 577,反转字符串中的单词
- 图论(6)树的概念,中心与形心
- 关于邮件中的encoded-word的解析
- lucene和solr第二篇