【问题描述】
小明放学回家会经过一个天桥到马路对面才可以搭乘公交,而登上天桥需 要迈 26 级台阶。他突然想到数学课上的一个问题:如果我每一步只能迈上 1 个 或 2 个台阶。那么面对不同级数的楼梯,有多少种不同的走法呢? 请你利用计算机的优势,计算 N(N<=39)级台阶一共有多少种上法,帮助 小明寻找答案。
【输入描述】
输入一行,正整数 N(N<=39)
【输出描述】
输出一行,有多少种不同的上法
【输入样例】
8
【输出样例】
34
【解析】
分析:
当N = 1 时,共有1 种,是:1 ;
当N = 2 时,共有1 种,是:( 1 + 1 );
当N = 3 时,共有3 种,分别是:( 1 + 1 + 1 )( 1 + 2 )( 2 + 1 );
当N = 4 时,共有5 种,分别是:( 1 + 1 + 1 + 1 )( 1 + 1 + 2 ) ( 1 + 2 + 1 )( 2 + 1 + 1 )( 2 + 2 );
当N = 5 时,共有8种,分别是:( 1 + 1 + 1 + 1 + 1)( 1 + 1 + 1 + 2 )( 1 + 1 + 2+ 1 )( 1 + 2 + 1 + 1 )( 2+ 1 + 1 + 1 )( 2 +2 + 1 )( 1 +2 + 2 )( 2 +1 + 2 );
从上面分析可知本题关键点:斐波那契数列,代码如下。
#include <iostream>
using namespace std;
int main(){
long long x,a1=0,a2=1,a3;
cin>>x;
for(int i=1;i<=x;i++){
a3=a1+a2;
a1=a2;
a2=a3;
}
cout<<a3;
return 0;
}