题目:
思路:N级台阶的走法=先走一级后,n-1级台阶的走法+先走两级后,n-2级台阶的走法
f(n)=f(n-1)+f(n_2) 边界条件:当n<0,0种走法;当n=0,1种走法。(通过边界条件阻止无穷递归发生!!!)根据第一部的做法分成几大类。然后发现子问题和原问题是形式相同但规模更小,但注意要有边界条件!!!!
#include <iostream>
using namespace std;
int N;//共N个台阶
int stairs(int n)//台阶走法
{
if (n < 0) return 0;
if (n == 0) return 1;
return stairs(n - 1) + stairs(n - 2);
}
int main()
{
while (cin >> N)
{
cout << stairs(N) << endl;
}
return 0;
}
样例: