题目:给定整数N, 返回斐波那契数列的第N项

补充问题1:给定整数N,代表台阶数,一次可以跨2个或者1个台阶,返回有多少中走法

补充问题2:假设农场中成熟的母?每年只会省1头小母牛,并且永远不会死。第一年农场有1只成熟的母牛,第二年开始,母牛开始生小母牛。每只小母牛3年之后成熟又可以生小母牛。给定整数N,求出N年后牛的

"""原文题 复杂度O(2^n)"""def f1(n):if n < 1:return 0if n==1 or n==2:return 1return f(n-1) + f(n-2)"""原问题 复杂度O(N)"""def f2(n):if n < 1:return 0if n==1 or n==2:return 1res = 1pre = 1tmp = 0for i in range(3,n):tmp = resres = res + prepre = tmpreturn res"""原问题O(logN)"""def maxtrixPower(m,p):res = [[0 for i in range(len(m[0]))] for j in range(len(m))]for i in range(len(res)):res[i][j] = 1tmp = mwhile p > 0:if p&1!=0: //p为奇数res = muliMatrix(res,tmp)tmp = muliMatrix(tmp,tmp)p >>= 1return resdef muliMatrix(m1,m2):res = [[0 for i in range(len(m2[0]))] for j in range(len(m1))]for i in range(len(m1)):for j in range(len(m2[0])):for k in range(len(m1[0])):res[i][j] += m1[i][k] * m2[k][j]return resdef f3(n):if n < 1:return 0if n == 1 or n == 2:return 1base = [[1,1],[1,0]]res = matrixPower(base,n-2)return res[0][0] + res[1][0]"""补充问题1"""def s1(n):if n < 1:return 0if n==1 or n==2:return nreturn s1(n-1) + s1(n-2)def s2(n):if n < 1:return 0if n == 1 or n==2:return nres = 2pre = 1tmp = 0for i in range(3,n):tmp = resres = res + prepre = tmpreturn resdef s3(n):if n < 1:return 0if n==1 or n==2:return nbase = [[1,1],[1,0]]res = matrixPower(base,n-2)return 2*res[0][0] + res[1][0]"""补充问题2"""
def c1(n):if n < 1:return 0if n==1 or n==2 or n==3:return nreturn c1(n-1) + c1(n-3)def c2(n):if n < 1:return 0if n==1 or n==2 or n==3:return nres = 3pre = 2prpre = 1tmp1 = 0tmp2 = 0for i in range(4,n):tmp1 = restmp2 = preres = res + prepre = tmp1prpre = tmp2return resdef c3(n):if n < 1:return 0if n==1 or n==2 or n==3:return nbase = [[1,1,0],[0,0,1],[1,0,0]]res = matrixPower(base,n-3)return 3*res[0][0] + 2*res[1][0] + res[2][0]

斐波那契问题的递归和动态规划相关推荐

  1. 斐波那契数列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() #斐波那契数列 ...

  2. (兔子繁殖问题)斐波那契数列:递归非递归解法

    题目 假设一对幼年兔子需要一个月长成成年兔子,一对成年兔子一个月后每个月都可以繁衍出一对新的幼年兔子.不考虑死亡的情况,问第 N 个月时共有多少对兔子? 这是一个典型的斐波那契数列问题,即 第一个月有 ...

  3. Python输出斐波那契数列【递归、迭代】

    Python输出斐波那契数列[递归.迭代] 首先 斐波那契数列的定义是什么? 斐波那契数列指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.--在数学上,斐波那契数列以如下被以递推的方 ...

  4. 斐波那契数列(递归+源码+注释)

    斐波那契数列(递归+源码+注释) 公元 1202 年,意大利数学家莱昂纳多·斐波那契提出了具备以下特征的数列: 前两个数的值分别为 0 .1 或者 1.1: 从第 3 个数字开始,它的值是前两个数字的 ...

  5. 裴波那契数列的递归和动态规划算法

    裴波那契数列的递归和动态规划算法 一.    概论 通过对裴波那契数列的例子,分析了递归和动态规划算法的本质.并且说明了两种算法的区别. 裴波那契数列:800年前,意大利的数学家斐波纳契出版了惊世之作 ...

  6. 递归与分治——斐波那契数列非递归,递归,与优化后的递归算法

    斐波那契数列: 1.1.2.3.5.8.13.21.-- 简单说,就是前两项的和是第三项的值. 1.求第N个斐波那契数的值(非递归) //斐波那契数列 int fun(int n) {int a = ...

  7. 斐波那契数列python递归 0、1、1、2、3_python实现斐波那契数列的多种方式

    正文共: 3269字 8图 预计阅读时间: 9分钟 每日分享 The great pleasure in life is doing what people say you cannot do. 人生 ...

  8. python用递归法写斐波那契_python实现斐波那契数列: 递归+备忘录法+动态规划实现...

    1.为什么备忘录法和动态规划法: 斐波那契是很多人入门递归思想的第一课,所以很多人都会最简单的一种递归写法,但是其实递归的过程,他的时间复杂度非常高,达到了O(2的n次方)这样的一个指数级别. 先看最 ...

  9. python斐波那契前20递归_算法python实现经典递归问题(汉诺塔, 斐波那契数列,阶乘)...

    经典递归 汉诺塔问题 背景故事 传说印度某间寺院有三根柱子,上串64个金盘.寺院里的僧侣依照一个古老的预言,以上述规则移动这些盘子:预言说当这些盘子移动完毕,世界就会灭亡.这个传说叫做梵天寺之塔问题( ...

最新文章

  1. 树莓派安装octave,报错missing `server' JVM at问题解决
  2. python要点简要-一日精通python
  3. Go 1.5正式发布:实现自举、引入并发垃圾收集器
  4. kaggle研究生招生(上)
  5. Java Web会话管理
  6. sublime编辑python_在没有安装Python的前提下,让Sublime text编辑器来运行Py?
  7. jQuery之ajax错误调试分析
  8. Java调用Bing翻译
  9. 没有对手的人生是孤单的
  10. 阿里P9面试官分享:应聘阿里全流程
  11. “五一”或成疫情来最火爆假期,招行信用卡天天返利助力消费
  12. mysql复购率_MySQL_复购回购率
  13. 电脑开不了机启动不了|开机黑屏只有光标再闪
  14. 苹果手机怎么看生产日期?参考方法在这!
  15. 【2021年数学建模国赛C题第一问】基于TOPSIS法评价类模型
  16. 神经网络之传递函数(sigmoid ,双S)
  17. 小白学数据结构——零、算法初步(算法分类及最大子数组小试牛刀)
  18. 微信小程序——自定义组件
  19. 软件流程和管理(一):什么是项目
  20. Android — 创建文件及文件夹

热门文章

  1. Missing artifact com.microsoft.sqlserver:sqljdbc4:jar:4.0
  2. linux系统下源码安装mysql5.6数据库
  3. listview 的 selection mode 训练小例子
  4. Visual Studio使用技巧,创建自己的代码片段
  5. 关于null和undefined
  6. Ubuntu下搭建sun-jdk和Maven2
  7. SQL Server 索引重建或索引重組
  8. C#CodeSmith代码批量生成模板制作经验分享
  9. Community Server2.0专注细节一 邮件提醒按钮实现(上) [转]
  10. WSL(windows subsystem for linux)安装错误:安装过程中遇到错误,但可以继续安装。组件: ‘WSL 内核‘ 错误代码: 0x80072f78解决方法