算法思路:有n阶台阶,每次只能上1阶或2阶,问一共有多少种走法。从后往前想,走到第n阶台阶一定是从第n-1台阶走1阶或是从第n-2阶台阶走2步,若走上第n阶台阶一共有f(n)种走法,则f(n)=f(n-1)+f(n-2),再由走上1阶台阶有1种走法和走上2阶台阶有2种走法可递推出f(n).
#include<iostream>
using namespace std;
int f(int n){
if(n==1)
return 1; //1层楼有1种走法
else if(n==2)
return 2; //2层楼有2种走法
else
return f(n-1)+f(n-2); //递推关系
}
int main(){
int n;
cout<<"请输入楼梯层数"<<endl;
cin>>n;
cout<<"一共有"<<f(n)<<"种走法";
}