1. 第一题(引子):输出菲波那切数列的第N项。
斐波那契数列含义(百度百科):
指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)递归方式:public static int fibnacci(int n){if (n==0){return 0;}if (n==1){return 1;}return fibnacci(n-1)+fibnacci(n-2);}我们计算n为4的情况:那么我们需要做如下的计算:Fibonacci(4) = Fibonacci(3) + Fibonacci(2);= Fibonacci(2) + Fibonacci(1) + Fibonacci(1) + Fibonacci(0);= Fibonacci(1) + Fibonacci(0) + Fibonacci(1) + Fibonacci(1) + Fibonacci(0);看看,多做了多少计算。2 计算了 2次,1 计算了5次,0计算了3次。正常来说我们计算4次就可以了吧。这样相当于多做了4次。非递归方式:public static int fibnacci2(int n){if (n==0){return 0;}if (n==1 || n==2){return  1;}int f1=1;int f2=1;int count=3;while (count++<=n){int temp=f1;f1=f2;f2=temp+f2;}return f2;}延伸到青蛙跳台阶问题:2. 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。如果n=1,只有一种跳法,那就是1如果n=2,那么有两种跳法,2,[1,1]如果n=3,那么有三种跳法,[1,1,1],,[1,2],[2,1]如果n=4,那么有五种跳法,[1,1,1,1],[1,1,2],[1,2,1],[2,1,1],[2,2]如果n=5,那么有八种跳法,[1,1,1,1,1],[1,1,1,2],[1,1,2,1],[1,2,1,1],[2,1,1,1],[2,2,1],[2,1,2],[1,2,2]结果为1,2,3,5,8  这不特么是斐波那切数列嘛递归做法:public static int jump(int n){if (n==0)return 0;if (n==1)return 1;if (n==2)return 2;return jump(n-1)+jump(n-2);}非递归做法:public static int jump2(int n){if (n==0)return 0;if (n==1)return 1;if (n==2)return 2;int n1=1;int n2=2;int count=2;while (count++<=n){int tmp=n1;n1=n2;n2=tmp+n2;}return n2;}//一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。//f(n) = f(n-1) + f(n-2) + f(n-3) + ... + f(n-(n-1)) + f(n-n)3. 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。f(n) = f(n-1) + f(n-2) + f(n-3) + ... + f(n-(n-1)) + f(n-n)= f(0) + f(1) + f(2) + f(3) + ... + f(n-2)+f(n-1)f(n-1) = f(0) + f(1)+f(2)+f(3) + ... + f((n-1)-1) = f(0) + f(1) + f(2) + f(3) + ... + f(n-2)so  f(n)=2*f(n-1)public int Jump3(int n) {if (n <= 1) {return 1;} else {return 2 * Jump3(n - 1);}}4. 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个m级的台阶总共有多少种跳法。先列多项式:f(n) =  f(n-1) + f(n-2) + f(n-3) + ... + f(n-m)f(n-1) =   f(n-2) + f(n-3) + ... + f(n-m) + f(n-m-1)化简得:f(n) = 2f(n-1) - f(n-m-1)public static int Jump4(int n,int m ) {//当大于m的时候是上面的公式if(n > m){return 2*Jump4(n-1, m)-Jump4(n-1-m, m);}//当小于等于m的时候就是和n级的相同了if (n <= 1) {return 1;} else {return 2 * Jump4(n - 1,n);}}
}

算法—青蛙跳台阶问题汇总相关推荐

  1. 面试算法-青蛙跳台阶问题(JAVA实现)

    题干 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个 n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 数据范围:0<= n <=40 要求:时间复杂度:O(n) ...

  2. Java小青蛙跳台街,算法-青蛙跳台阶详解

    /* [跳台阶] [题目] 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. [解析] 与斐波那契数列的求解过程类似.典型的动态规划问题.对于第 n 级台阶, ...

  3. 每日算法——最全青蛙跳台阶算法问题

    每日算法 2022年9月12日 一.最全青蛙跳台阶算法问题 问题一:一只青蛙一次可以跳上一级台阶,也可以跳上二级台阶,求该青蛙跳上一个n级的台阶总共需要多少种跳法. 分析:当n=1的时候,①只需要跳一 ...

  4. php算法台阶,php如何解决青蛙跳台阶的问题(代码)

    本篇文章给大家带来的内容是关于php如何解决青蛙跳台阶的问题(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级 ...

  5. python青蛙跳台阶_Python算法题(一)——青蛙跳台阶

    题目一(青蛙跳台阶): 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析: 假设只有一级台阶,则总共只有一种跳法: 假设有两级台阶,则总共有两种跳法: ...

  6. [牛客算法总结]:青蛙跳台阶

    标签: 递归.记忆化搜索.动态规划 题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果). 数据范围:1 \leq n \l ...

  7. python比赛积分类算法题_Python算法题(一)——青蛙跳台阶

    题目一(青蛙跳台阶): 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析: 假设只有一级台阶,则总共只有一种跳法: 假设有两级台阶,则总共有两种跳法: ...

  8. 斐波那契数列及青蛙跳台阶问题

    题目1: 写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项. 斐波那契(Fibonacci)数列定义例如以下: f(n)=⎧⎩⎨⎪⎪0,1,f(n−1)+f(n−2),n=0n=1n& ...

  9. Java小青蛙跳台街,青蛙跳台阶问题:Java版,递归算法和循环

    青蛙跳台阶 青蛙跳台阶,青蛙每一次可以跳1阶或2阶,假设有n阶台阶,青蛙要跳完所有台阶,有多少种跳法? 引入斐波那契数列 对于斐波那契数列,百度百科是这么解释的: 斐波那契数列(Fibonacci s ...

  10. 青蛙跳台阶的问题——Fibonacci

    转载自   青蛙跳台阶的问题--Fibonacci 这几天正在复习算法,今天在看一篇文章时偶然看到这个题目,想了一下居然没什么思路--(抱歉,实在太菜.),文章中提示了一个关键词:Fibonacci ...

最新文章

  1. Error in x$e : $ operator is invalid for atomic vectors
  2. ArcGIS API for Silverlight 点沿着线流动
  3. Go http源码解析(一)
  4. C#字符串处理(String与StringBuilder)
  5. Titanic: Machine Learning from Disaster-kaggle入门赛-学习笔记
  6. 个人作业Alpha项目测试
  7. docker rabbitmq_一文看懂Rabbitmq,从安装到实战演练
  8. Java 多线程 —— 死锁与锁的错误用法
  9. mysql 修改最大连接数
  10. python的selenium模块_python-爬虫-selenium模块
  11. vue 第九天 v-model的基本使用
  12. Java电商项目-5.内容管理cms系统
  13. 【UV打印机】RYPC打印软件教程(一)-软件简介
  14. SHFileOperation 文件拷贝、移动、删除等操作
  15. 微信开发工具(小程序)
  16. linux中dd命令增加内存使用率,Linux 下使用 dd 命令进行硬盘 I/O 性能检测
  17. 校园网络远程登录虚拟机Linux问题解决
  18. 大学生会计技能竞赛总决赛(三)
  19. scaling之旅_【scaling】什么意思_英语scaling的翻译_音标_读音_用法_例句_在线翻译_有道词典...
  20. 【递归 动态规划 备忘录法】Fibonacci数列(斐波那契数列)(C++)

热门文章

  1. 惠普总裁口述的职业规划(3)
  2. 【最新】白piao迅雷的下载速度(迅雷11亲测好用)
  3. 【渝粤教育】国家开放大学2018年春季 0034-21T现代管理原理 参考试题
  4. HEX编码、Base64编码
  5. java der decode_支付宝进行签名时爆DER input, Integer tag error异常
  6. pb+api实际应用
  7. 中国人保为闲人谷中药科技承保产品责任险,为消费者保驾护航!
  8. 511遇见易语言分割文本
  9. 《逻辑学概论》mooc
  10. CentOS8 启动错误,enter emergency mode 报错 Failed to mount /sysroot 解决方法