一只青蛙一次可以跳上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;
	}