一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法
/* * 递归 * 当n = 1, 只有1中跳法;当n = 2时,有两种跳法;当n = 3 时,有3种跳法;当n = 4时,有5种跳法; * 当n = 5时,有8种跳法;.......规律类似于Fibonacci数列(0,1,1,2,3,5,8....) */ public static int jumpFloor(int number) { if(number==1) return 1; else if(number==2) return 2; else return jumpFloor(number-1)+jumpFloor(number-2); }
//排列组合方法 public static int jumpFloor(int number) { int t = number / 2; int sum = 0, i; for (i = t; i >= 0; i--) { int o = number - i * 2; sum += c(i, o); } return sum; } public static long c(int t, int o) { long r; if (t >= o) r = a(t + o, t) / a(o, 0); else r = a(t + o, o) / a(t, 0); return r; } //从n到m-1的阶乘 public static long a(int n, int m) { long s = 1, i; for (i = n; i > m; i--) { s *= i; } return s; }