剑指offer09:变态跳台阶
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。
求该青蛙跳上一个n级的台阶总共有多少种跳法。
解法一:基于递归的方法
class Solution {
public:
int jumpFloorII(int number) {
if (number <= 0) {
return -1;
}
else if (number == 1) {
return 1;
}
else {
return 2 * jumpFloorII(number - 1);
}
}
};
解法二:基于规律的方法
class Solution2 {
public:
int jumpFloorII(int number) {
return 1 << (number - 1);
}
};
main函数
#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int nums;
cout << "请输入台阶的数量:" << endl;
cin >> nums;
Solution2 a;
cout << "总共有 " << a.jumpFloorII(nums) << "种跳法"<<endl;
system("pause");
return 0;
}