一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
class Solution {
public:
int jumpFloorII(int number) {
if(number < 2)
return number;
else{
/*
这他妈完全就是一个归纳总结的数学题啊!
假设只有1级台阶,那青蛙只有a_1=1种跳法;
假设有2级台阶,那么2可以分成1+1,则有a_2=a_1+a_1种跳法;
假设有3级台阶,那么3可以分成1+2或2+1,则有a_1+a_2+a_2+a_1种跳法……
以此类推:
当有n级台阶的时候,那么n可以分成:n+1或者1+n,则有(a_{n-1}+a1)*2种跳法。
*/
return jumpFloorII(number-1)*2;
}
}
};