问题描述
分析:问题拆解成更小规模同样的问题,即n级台阶的走法 = 先走一级台阶后n-1级台阶的走法 + 先走两级台阶后 n-2级台阶的走法,可以表示为 f(n)= f(n-1)+ f(n-2),边界条件,n = 1时 返回1,n = 2 时返回2,观察递归函数防止无穷递归。
程序代码
#include <iostream>
using namespace std;
int N;
int stairs(int n) {
if (n == 1) return 1;
if (n == 2) return 2;
return stairs(n - 1) + stairs(n - 2);
}
int main()
{
while (cin >> N) {
cout << stairs(N) << endl;
}
return 0;
}