题意
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路分析
- 先列出跳上前几级台阶的方法:
- 通过上图可以发现一个规律:当前要跳的台阶数等于要跳上前几个台阶的和。例如:f(4)=f(3)+f(2)+f(1)+f(0)。
3.通过这个规律,我们可以得到一个状态转移方程:
代码实现
#include<iostream>
#include<vector>
using namespace std;
int jumpFloor(int n) {
if (n < 0)
return 0;
else if (n <= 2)
return n;
return jumpFloor(n - 1) * 2;
}
int main(){
int n;
while (cin >> n){
int ret = jumpFloor(n);
cout << ret << endl;
}
}