題目描述
一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
解法一:(遞歸, 626ms)
class Solution {
public:
int jumpFloor(int number) {
if(number <= 0) {
return -1;
}else if(number == 1) {
return 1;
}else if(number == 2) {
return 2;
}else {
return jumpFloor(number - 1) + jumpFloor(number- 2);
}
}
};
解法二:(循環, 3ms)
class Solution {
public:
int jumpFloor(int number) {
if(number <= 0) {
return -1;
}else if(number == 1) {
return 1;
}else if(number == 2) {
return 2;
}
int sumStep = 0, sumBackStep2 = 1, sumBackStep1 = 2;
for(int i = 3; i <= number; i++) {
sumStep = sumBackStep2 + sumBackStep1;
sumBackStep2 = sumBackStep1;
sumBackStep1 = sumStep;
}
return sumStep;
}
};