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


【問題描述】

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM