时间限制:1秒     空间限制:32768k

斐波那契数列指的是这样一个数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368。

可以观察到,从第3个数开始,每个数的值都等于前连个数之和。

同时,定义f(0)=0, f(1)=1.

则 f(2)=f(1)+f(0)=1;

f(3)=f(2)+f(1)=2;

... 依次类推,

f(n)=f(n-1)+f(n-2)

该问题实质是斐波那契数列求和,递推公式为 f(n)=f(n-1)+f(n-2);

可以考虑,小青蛙每一步跳跃只有两种选择:一是再跳一级阶梯到达第 i 级阶梯,此时小青蛙处于第 i-1 级阶梯;或者再跳两级阶梯到达第 i 级阶梯,此时小青蛙处于第 i-2 级阶梯。

于是,i 级阶梯的跳法总和依赖于前 i-1 级阶梯的跳法总数f(i-1)和前 i-2 级阶梯的跳法总数f(i-2)。因为只有两种可能性,所以,f(i)=f(i-1)+f(i-2);

依次类推,可以递归求出n级阶梯跳法之和。

递归算法实现:

public int JumpFloor(int target){

if(target<0)

return 0;

int[] fib={0,1,2};

if(target<3)

return fib[target];

return JumpFloor(target-1)+JumpFloor(target-2);

}

备注:此方法不满足空间要求(递归空间)。

非递归算法:

public int JumpFloor(int target){

if(target<0)

return 0;

int[] fib={0,1,2};

if(target<3)

return fib[target];

int total=0;

int firstElem=1;

int secondElem=2;

for(int i=3;i<=target;i++){

total=firstElem+secondElem;

firstElem=secondElem;

secondElem=total;  //迭代

}

return total;

}

转自:http://www.nowcoder.com/questionTerminal/f4d47027d49a48b28274f6d4e0b6ff79?pos=12&tagId=0&orderByHotValue=1

一只青蛙跳向三个台阶_题目描述: k一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。...相关推荐

  1. 【python逻辑算法题】一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法

    文章目录 一.题目描述 二.问题分析 三.代码分析与逻辑(python3实现) 四.源码及运行结果 总结 提示:以下是本篇文章正文内容: 一.题目描述 题目:一只青蛙一次可以跳上1级台阶,也可以跳上2 ...

  2. 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

    import java.util.Scanner;/* 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法.请用递归和循环2中方法实现答案来源:https://w ...

  3. 笔试题:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。该题有三种解法:递归的方法求解斐波那契数列、用概率与统计的数学方法解决,3.动态规划

    笔试题 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法.该题有三种解法:1.递归的方法求解斐波那契数列.2.用概率与统计的数学方法解决,3.动态规划 ...

  4. [递归]一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

    这题是用C写的~ 在牛客上半天找不着ACM模式,练习模式里只有核心代码模式 这样用C语言编译器就不能自定义函数啊,不鸡肋吗??? 解决方法:在核心代码模式下用C++编译器(反正C++完全兼容C的不是吗 ...

  5. c语言青蛙游戏,c语言:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?...

    一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法? 解:把n级台阶时的跳法记为f(n),当n>2时,第一次跳的时候有两种不同的选择:一是第一次只跳1级,此 ...

  6. 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?(递归与动态规划)

    一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法? private static HashMap<Integer, Long> record = n ...

  7. 牛客网刷题java之(斐波那契数列)一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

    题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 分析: 对于本题,前提只有 一次 1阶或者2阶的跳法. a.如果两种跳法, ...

  8. 牛客网刷题java之变态跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

    题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析: 其实和普通的只能跳一个和两个台阶的思路是一样的,都是为了求迭代表达式. ...

  9. 一只青蛙一次可以跳上1级台阶也可以跳上2级求该青蛙跳上一个n级的台阶总共有多少种跳法?

    一只青蛙一次可以跳上1级台阶也可以跳上2级求该青蛙跳上一个n级的台阶总共有多少种跳法? 解题思路 :每次跳1到n,那么如果是n阶台阶,一次就可能跳1~n阶(话说n=1000,青蛙腿肯定绑火箭了),乍一 ...

最新文章

  1. 图灵奖得主Yann LeCun最新访谈!
  2. 父窗口控制子窗口的行为-打开,关闭,重定位,回复
  3. 看完这篇,你还不能理解 ‘数据库架构’?趁早回家吧
  4. 一位资深程序员的成长故事
  5. lambda表达式或者匿名函数中为什么要求外部变量为final
  6. VMware vSphere 6 Enterprise Plus 永久激活许可证-亲测可用
  7. python处理pdf实例_python实现pdf转word的例子
  8. python为csv文件添加表头_python读csv文件时指定行为表头或无表头的方法
  9. matlab vision hdl,MATLAB下载,MATLAB购买,MATLAB试用,MATLAB介绍,MATLAB评价
  10. ECMAScript6(17):Class类
  11. office工具包开源了,使用Excel导入导出非常方便
  12. atitit.事件驱动的总结attilax
  13. fgui的ui管理框架_FGUI+Laya Air 游戏架构之stage分层架构
  14. 8位数控分频器的设计_数控分频器的设计实验报告
  15. web测试中如何简单定位bug
  16. 【深度学习|数据集】Python 划分训练集和验证集
  17. Frament与activity切换
  18. excel操作技巧,你知道吗?反正我不知道
  19. workflow实例
  20. react input Onchange事件不能立刻拿到值,只能拿到上次输入的值

热门文章

  1. AAAI论文摘要【知识图谱补全】:A Survey on knowledge Graphs:Representation,Acquisition and Application
  2. GANs学习系列(2):GANs最新进展二
  3. 百度啊,你是新年第一惨
  4. 数据分析——关于同比与环比,你真的了解吗?看看踩过的坑
  5. 4-17 定义一个长方形类,定义 求周长和面积的方法,然后定义一个测试类,进行测试。
  6. Java SE 第三讲(原生数据类型使用陷阱 Pitfall of Primitive Data Type)
  7. StringPool详解
  8. 您选择的不是数据库安装目录_您不是您的数据,但您的数据仍然是您
  9. Python笔记 | 角谷猜想
  10. arcgis标注牵引线_ArcEngine设置有牵引线的标注