青蛙下跳台阶有多少种方法,青蛙跳台阶算法java递归

  青蛙下跳台阶有多少种方法,青蛙跳台阶算法java递归

  00-1010一只青蛙一次可以跳第一级或者第二级。青蛙一个N步能跳多少种跳法?

  

1.问题描述

 

  青蛙既可以一次跳两步,也可以一次跳一步。

  我们以三步为例:如果一次跳一步,还剩下多少种跳法?让我们仔细想想:

  跳完一步,剩下的几步相当于3 -1步,剩下两步。两步跳法就是上图所示的两种跳法。

  如果一次跳两步,剩下的几步相当于3-2步,还剩一步。一步的跳跃法就是上图所示的一种跳跃法。然后加起来就是三跳。

  所以,如果你想知道n步上有多少种跳跃,实际上你想看n-1步上有多少种跳跃,加上n-2步上有多少种跳跃。

  了解规律后,你会发现这其实是一个变相的斐波那契数列,只不过这个数列的第一项是1,第二项是2。

  00-1010我们再来看看斐波那契数列的写法:

  唯一不同的是斐波那契数列的前两项都是1。

  蛙跳跳台第一项1,第二项2。

  只要稍微改变一下递归方法,就可以解决青蛙在台阶上跳的问题。

  00-1010公开课测试演示{ public static int frog jump(int n){ if(n==1 n==2){//当n是前两步时,n是几返回n;} else { return frog jump(n-2)frog jump(n-1);//求N步的几种跳转方法} } public static void main(string[]args){ system . out . println(frog jump(1));system . out . println(frog jump(2));system . out . println(frog jump(3));system . out . println(frog jump(4));}}打印结果:

  00-1010青蛙跳台阶的问题虽然可以用递归来解决,但是会有大量的重复计算。如果数量太大,程序计算结果的时间会很长,所以我们不建议在面试中使用递归的方法来解决这类问题。

  这里有一个更好的解决方案:循环(迭代)实现。

  绘图分析:

  给大家解释一下上图:

  开始f3=3,f2=2,f1=1,

  先让f3=f1 f2。可以吗?1 2=3.

  然后我们把f2的值赋给f1,当f1等于2时,

  然后把f3的值赋给f2,f2的值等于3。

  循环,那么此时f3的值为2 ^ 3=5,恰好是我们第4步的五种跳跃方法。

  代码实现:

  第二种编写方法:实现公共类test demo { public static int frog jump 2(int n){ if(n==1 n==2){ return n;} int f1=1;int F2=2;int F3=0;for(int I=3;I=n;I){ F3=f1 F2;f1=f2f2=f3}返回F3;} public static void main(String[]args){ system . out . println(frog jump 2(1));system . out . println(frog jump 2(2));system . out . println(frog jump 2(3));system . out . println(frog jump 2(4));system . out . println(frog jump 2(5));system . out . println(frog jump 2(45));}}运行结果:

  这篇关于Java解决青蛙跳步的过程的文章到此为止。关于Java青蛙跳步的更多信息,请搜索之前关于流行IT的文章或者继续浏览下面的相关文章。我希望你将来能支持流行它!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: