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

分析:

两种方法,第一种比较直观,第二种比较直接。

第一种:f(1)=1;    f(2)=f(2-1)+f(2-2)=2;    f(3)=f(3-1)+f(3-2)+f(3-3);    f(n) = f(n-1)+f(n-2)+...+f(n-n) = f(0)+f(1)+...+f(n-1);

  因此 f(n-1) = f(0)+f(1)+...+f(n-2);f(n) = f(n-1)+f(n-1) = 2*f(n-1)

第二种:除了最后一个台阶,剩余的都是可跳可不跳两种情况,因此结果就是 2^(n-1)

所以代码实现也对应有两种写法:第一种for循环迭代,第二种位移操作<<