题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解题思路
得到上一个题目的启发,觉得这个问题可以转变为f(n) = f(n-1) + f(n-2) + f(n-3) + ... +f(2) +f(1)
参考代码
(有错误:数学功底不达标,没有合理推到出 2*f(n-1),(n>=2),总结的推导技巧是:f(n)与f(n-1)之间的区别)
class Solution {
public:
int jumpFloorII(int number) {
if(number <=0)
return 0;
if(number == 1)
return 1;
if(number == 2)
return 2;
int method_num = 0;
int i;
for(i = 3;i<=number;i++)
{
method_num = method_num+(((number-1)*number)/2)+1;
}
return method_num;
}
};
正确的代码如下:
class Solution {
public:
int jumpFloorII(int number) {
if(number <=0)
return 0;
else if(number == 1)
return 1;
else
return 2*jumpFloorII(number -1);
}
};
总结
数学功底很重要;乘法的时候用递归函数没有什么问题;