思路
首先明确小明有三种走法(一步跨过的台阶个数),现在我们只关注最后一步他是怎么走的,因为当这一步不同,那从0到n的走法是不是就一定不同。
假设小明从0到n有S(n)种走法,那最后一步的前一步就可能是S(n-1),S(n-2),S(n-3),把他们都加起来
就是S(n)
依次递归,现在我们只需要计算一下S(1),S(2),S(3)即可,很容易得到是1,2,4
#include <iostream>
using namespace std;
// aid
int solve(int n) {
if(n == 1) return 1;
else if(n == 2) return 2;
else if(n == 3) return 4;
else return solve(n-1) + solve(n-2) + solve(n-3);
}
// solve
int main() {
cin.tie(0);
ios::sync_with_stdio(false);
int n;
cin >> n;
cout << solve(n);
return 0;
}