/**
-
@author 曾朝阳
-
日期:04/22/2019
-
功能:
-
正常跳台阶:一只青蛙一次可以跳上1级台阶,也可以跳上2级,也可以跳上3级。
-
求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
-
变态跳台阶: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。 求该青蛙跳上一个n级的台阶总共有多少种跳法。
-
思路:如果有4阶,可以站在第三阶往上跳,也可以站在第二阶往上跳,还可以站在第一阶往上跳,
*/
public class FrogJumpFloor {
public static int jumpfloor(int n) {
// 如果是3阶的话,有4中跳法(111,12,21,3),故这里加1
if (n == 0)
return 1;
else if (n == 1)
return 1;
else if (n == 2)
return 2;
else
return jumpfloor(n - 1) + jumpfloor(n - 2) + jumpfloor(n - 3);
}
public static int abnormal_jumpfloor(int n) {
int res = 0;
if (n == 0)
return 1;
else if (n == 1)
return 1;
else if (n == 2)
return 2;
else
for (int i = 0; i < n; i++) {
res += abnormal_jumpfloor(i);
}
return res;
}
public static void main(String[] args) {
System.out.println("请输入台阶n的值:");
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int res = jumpfloor(n);
int res2 = abnormal_jumpfloor(n);
System.out.println("正常跳:一共有" + res + "种跳法");
System.out.println("变态跳:一共有" + res2 + "种跳法");
}
}