1. 程式人生 > >上樓梯問題(遞歸C++)

上樓梯問題(遞歸C++)

spa time 遞歸 問題 soft for 情況 new end

【問題描述】

小明上樓梯,一次可以邁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++)