上樓梯問題(遞歸C++)
阿新 • • 發佈:2019-01-23
spa time 遞歸 問題 soft for 情況 new end
if(n>=1){
a[index]=1;
index++;
louti(index,n-1);
index--;
}
//走2步的情況
if(n>=2){
a[index]=2;
index++;
louti(index,n-2);
index--;
}
//走3步的情況
if(n>=3){
a[index++]=3;
louti(index,n-3);
index--;
}
}
int main(){
int n;
cin >> n;
louti(0,n);
return 0;
}
【問題描述】
小明上樓梯,一次可以邁1步,2步和3步,假設樓梯共有n個臺階,輸出他所有的走法.
【代碼展示】
#include<iostream>
using namespace std;
int a[100];
void louti(int index,int n){
//遞歸邊界:滿足條件則輸出行走步數
if(n==0){
for(int i=0;i<index;i++){
cout << a[i] << " ";
}
cout << endl;
return;
}
//走1步的情況
if(n>=1){
a[index]=1;
index++;
louti(index,n-1);
index--;
}
//走2步的情況
if(n>=2){
a[index]=2;
index++;
louti(index,n-2);
index--;
}
//走3步的情況
if(n>=3){
a[index++]=3;
louti(index,n-3);
index--;
}
}
int main(){
int n;
cin >> n;
louti(0,n);
return 0;
}
上樓梯問題(遞歸C++)