全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:688
推到 Plurk!
推到 Facebook!

遞迴問題

尚未結案
syao
初階會員


發表:66
回覆:63
積分:25
註冊:2005-02-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-22 13:33:18 IP:203.70.xxx.xxx 未訂閱
#include  using namespace std; void countdown(int n); int main() { countdown(4);// call the recursive function system("pause"); return 0; } void countdown(int n) { cout << "Counting down ... " << n << "\n"; if (n > 0) countdown(n-1); // function calls itself cout << n << ": Kaboom!\n"; } countdown(n-1); 改成 countdown(--n);這樣出來結果就不一樣 _________________________________________________ countdown(n-1); 正常輸出結果: Counting down ... 4 Counting down ... 3 Counting down ... 2 Counting down ... 1 Counting down ... 0 0 : Kaboom! 1 : Kaboom! 2 : Kaboom! 3 : Kaboom! 4 : Kaboom! 改成countdown(--n); 輸出結果變成 Counting down ... 4 Counting down ... 3 Counting down ... 2 Counting down ... 1 Counting down ... 0 0 : Kaboom! 0 : Kaboom! 1 : Kaboom! 2 : Kaboom! 3 : Kaboom! 這是是為什麼懂得人可以解釋給我聽嗎?? 謝謝
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-22 16:54:04 IP:61.66.xxx.xxx 未訂閱
n-1和n--一樣,都是先動作再減一 --n是先減一在動作 例 N = 10; printf("N = %d",n--) ==> N = 10,但現在變成9 N = 10; printf("N = %d",--n) ==> N = 9,現在變成9
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-22 17:08:19 IP:61.66.xxx.xxx 未訂閱
sorry我看錯了 0 : Kaboom! 0 : Kaboom! 1 : Kaboom! 2 : Kaboom! 3 : Kaboom! 多一次0 : Kaboom! 是因為你在做最後一次時,n已經變成0 而他回到上一層時,n的值也是0 你可以用trace看看,很容易就發現了
yorkland
高階會員


發表:2
回覆:138
積分:108
註冊:2004-12-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-22 17:08:37 IP:220.130.xxx.xxx 未訂閱
N-1 意思等同於 N-- (系統在執行過後, 才將N-1) --N 意思是在執行前, 就先減1, 所以才會有你描述的差異。
renth555
一般會員


發表:32
回覆:65
積分:19
註冊:2003-02-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-02-23 01:40:43 IP:61.56.xxx.xxx 未訂閱
int main() { countdown(4);// call the recursive function system("pause");  return 0; }    void countdown(int n) { cout << "Counting down ... " << n << "\n"; if (n > 0) countdown(n--);    <--------------------- n-- cout << n << ": Kaboom!\n"; }    那這樣 ---->  N-1 意思等同於 N-- (系統在執行過後, 才將N-1)
chuan6743
一般會員


發表:0
回覆:1
積分:0
註冊:2005-02-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-02-24 16:59:24 IP:163.26.xxx.xxx 未訂閱
n-1跟n--好像不一樣吧因為改成n--變成了無窮回圈 應該是因為最後一次--n變成了-1而-1小於0以0顯示 而=0也再顯示一次的關係吧
系統時間:2024-05-19 17:45:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!