概述
青蛙跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
分析:使用递归的思想
1级台阶:1种跳法;
2级台阶:2种跳法:一种是一次跳2级,一种是每次跳2级;
3级台阶:3种跳法:有两种选择:
A------>一次跳1级,后面2级台阶可以一次跳1级,也可以一次跳2级;
B------->一次跳2级,后面再跳1级。 A、B两种方法,总共有3种跳法。
n级台阶:
一次跳1级,剩余的n-1级进行递归,f(n-1)种跳法;
一次跳2级,剩余的 n-1级进行递归,有f(n-2)种跳法。
共有== f(n-1)+ f(n-2)==种跳法。
代码如下:
public class Test {
public static int jumpFloor(int n) {
if(n==1 || n==2) {
return n;
}
else {
return jumpFloor(n-1)+jumpFloor(n-2);
}
}
public static void main(String[] args) {
int n=3;
System.out.println("共有"+jumpFloor(n)+"种跳法");
}
}
变态跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法?
分析:
1级台阶:1种跳法
2级台阶:2种跳法
3级台阶:有三种选择:一次跳1级,后面的2级f(3-1)=f(2);一次跳2级,后面的1级f(3-2)=f(1);一次跳3级,后面的f(3-3)=f(0);
共有4种跳法
n级台阶:f(n-1)+f(n-2)+f(n-3)+…+f(n-n)=2*f(n-1)
代码如下:
public class Solution {
public int jumpFloor2(int target) {
if(target ==1){
return 1;
}
return 2*jumpFloor2(target-1);
}
public static void main(String[] args) {
int ret=jumpFloor2(3);
System.out.println(ret);
}
}
最后
以上就是顺心小猫咪为你收集整理的Java练习:跳台阶问题的全部内容,希望文章能够帮你解决Java练习:跳台阶问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复