楼梯有n级台阶,上楼可以一步上一阶,也可以一步上二阶。编一程序,计算共有多少种不同走法?
本题要求用递归算法实现。
输入
输入n(n<=50)
输出
输出走法的总数。
样例输入 Copy
3
样例输出 Copy
3
思路:从后往前想,最后走到n阶,上一步只能是n-1或n-2;
也就是说f(n)种情况,f(n)=f(n-1)+f(n-2); f(1)=1;f(2)=2;递归一目了然;
#include<iostream>//f(n)=f(n-1)+f(n-2)
#include<bits/stdc++.h>
using namespace std;
int step(int n){
if(n==2) return 2;
if(n==1) return 1;
else return step(n-1)+step(n-2);
}
int main(){
int n;
cin >> n;
cout << step(n) << endl;
return 0;
}