从楼上走到楼下共有h个台阶,每一步有3种走法:走1个台阶;走2个台阶;走3个台阶。问可走多少种方案,希望用递归思想来编程
#include <iostream>
using namespace std;
int take[99];
int n=0;//n方案数
void Try(int i,int s){
for(int j = 3; j > 0; j--){//j表示每步允许走的步数
if(i-j < 0){//台阶数小于要走的步数,什么也不做
}else{
take[s] = j;//记录第s步走j个台阶
if(i==j){//已经走到了楼下
n++;
cout<<"方案"<<n<<":";
for(int k = 1; k <= s; k++) cout<<take[k]<<" ";
cout<<endl;//换行
}else{
Try(i-j,s+1);//再去寻找剩下的方案
}
}
}
}
int main(){
int h;
cin>>h;//输入台阶数
Try(h,1);
cout<<"总方案数"<<n<<endl;
return 0;
}