跳台阶1:
题目:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路:
递归思想:可以理解为前面m步的情况加上最后一步的情况,前面m步理解为,m-1步加上最后一步的情况。
最后一步分为2中情况,上1级和上2级。代码如下:
class Solution {
public:
int jumpFloor(int number) {
if(number==1)
return 1;
if(number==2)
return 2;
return jumpFloor(number-1)+jumpFloor(number-2);
}
};
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
跳台阶2:
题目:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路:
如上题的理解。不同的是最后一步 n阶台阶有n种情况。所以需要循环分n种情况递归相加。代码如下:
public class Solution {
public int JumpFloorII(int target) {
if(target==1)
return 1;
int s=1;
for(int i=1;i<target;i++){
s+=JumpFloorII(target-i);
}
return s;
}
}
注意:递归类型的题目注意处理递归结束条件 即n为1时的情况。