遞迴。。爬樓梯
阿新 • • 發佈:2019-01-22
一次走1或者2步 打印出走到給數量n的所有走法
例
n=3
111
12
21
遞迴
int q[111]; int num=0; int n=4;//n隨便寫嘛。這測試寫的 void upstair(int n)//n當前已走的階梯數量 { if (n == x)//走到終點打印出來這個走法 把後面的清零 { //cout << "n = " << n << " step = " << m << " "; for (auto z : q) { if (z!=0) {cout << z; } }cout << endl; for (int i = num-1; i < x; i++) q[i] = 0; return; } for (int i = 1; i <= 2; i++) { if (n + i <=x) { q[num++] = i;//把這次要走的步數裝進陣列 upstair(n); num--; } } } int main() { for(int i=1;i<=2;i++)//開始走 { q[num++]=i; upstair(i); num--; } cin.get(); }
-v-經測試。走法是一個斐波那契數列 f(n)=1 3 5 8 13 21...
不遞迴就。一直while(1)記錄一個flag=0等flag==當前對應的f(n)跳出。沒到就一直for(i=1 i=2)