【题目】
【描述】
树老师爬楼梯,他可以每次走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; }