本文最后更新于:2020年6月28日 下午

题目描述:

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

实现如下:

//有n级台阶
//若跳1级则剩下n-1级,跳法f(n-1)
//若跳2级则剩下n-2级,跳法f(n-2)
//若跳3级则剩下n-3级,跳法f(n-3)
//若跳n-级则剩下1级,跳法f(n-(n-1)),即剩下一个台阶
//若跳n级则剩下0级,跳法f(0),即为1种方法
//f(n) = 1 + f(n-1) + f(n-2) + ... +f (1)
//f(1) = 1
//f(2) = 1 + f(1) = 2;
//f(3) = 1 + f(2) + f(1) = 4...
//以此类推
//f(n) = 2^(n-1)

class Solution
{
public:
	int jumpFloorII(int number)
	{
		return 1 << --number;//左移n-1位
	}
};