递归题:上台阶
程序员文章站
2022-06-04 18:21:43
...
题目:树老师爬楼梯,他可以每次爬1级或两级,输入楼梯的级数,求不同的走法。
输出:每一行输入对应一行输出
样例输入:
5
8
10
样例输出
8
34
89
思路:(重要多看几次)
n级台阶的走法=先走一级台阶,n-1级台阶的走法+先走两级台阶,n-2级台阶的走法
即f(n)=f(n-1)+f(n-2)
边界条件(就是说满足这个条件之后不用再递归,通过边界条件阻止无穷递归)
第一种:n<0 返回0 n=0 返回1.
第二种:n=0 返回1 n=1 返回1
第三种:n=1 返回1 n=2 返回2
代码:
#include <iostream>
using namespace std;
int fn(int n)
{
if(n<0)
return 0;
if(n==0)
return 1;
return fn(n-1)+fn(n-2);
}
int main()
{
int N;
while(cin>>N)
{
cout<<fn(N)<<endl;
}
return 0;
}