树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数

2021年9月14日 | 分类: 【编程】

【题目】

【描述】

树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数。

例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级;也可以第一次走两级,第二次走一级,一共3种方法。

【输入】

输入包含若干行,每行包含一个正整数N,代表楼梯级数,\(1\leqslant{N}\leqslant{30}\)

例如:
5
8
10

【输出】

不同的走法数,每一行输入对应一行输出:

例如:
8
34
89

【解析】

设 \(f(n)\) 表示走完n级楼梯的方法数,则有两种可能:
1. 第一次走1级,有 \(f(n-1)\) 种方法;
2. 第一次走2级,有 \(f(n-2)\) 种方法;

因此:\(f(n)=f(n-1)+f(n-2)\)

这是斐波那契数列。

代码:

#include <bits/stdc++.h>
using namespace std;
int fib(int x){
    if(x==1)return 1;
    else if(x==2)return 2;
    else return fib(x-1)+fib(x-2);
}
int main(){
    int x;
    while(scanf("%d",&x)==1)printf("%d\n",fib(x));
    return 0;
}