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

請問關於 c++ 河內塔 程式執行的步驟

尚未結案
j.k
一般會員


發表:5
回覆:4
積分:1
註冊:2004-11-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-14 12:38:17 IP:218.175.xxx.xxx 未訂閱
以下是 河內塔的程式碼 有幾個步驟 看不太懂 請各位高手指教一下    #include  using std::cout; using std::cin; using std::endl; void towers(int disks,int start,int end,int tmp) { if (disks==1) cout << start << "-->" << end << endl; else{ towers(disks-1,start,tmp,end); cout << start << "-->" << end << endl; towers(disks-1,tmp,end,start); } } main() { int mdisk; cin >> mdisk; towers(mdisk,1,3,2); return 0; 我把breakpoint(F9) 放在void towers(int disks,int start,int end,int tmp) 這一行 然後用 F11 一行一行看 程式就是不會跑 towers(disks-1,tmp,end,start); 這一行 如果輸入2 結果是 1-->2 1-->3 2-->3 請問 1-->3這個步驟是程式的哪一段??
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-14 20:17:52 IP:211.76.xxx.xxx 未訂閱
j.k  您好:    試著改寫您的程式,希望能方便能觀察與了輸出結果。 < class="code"> #include #include using namespace std; void towers(int disks,int start,int end,int tmp) { if (disks==1) cout << disks << ": "<< start << "-->" << end << endl; else{ towers(disks-1,start,tmp,end); cout << disks << ": "<< start << "-->" << end << endl; towers(disks-1,tmp,end,start); } } main() { int mdisk; cout << "How many disks to be moved? "; cin >> mdisk; cout << mdisk <> mdisk; return 0; } RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
Giya776
一般會員


發表:0
回覆:1
積分:0
註冊:2005-03-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-17 21:56:18 IP:220.141.xxx.xxx 未訂閱
請問一下 void towers(int disks,int start,int end,int tmp) { if (disks==1) cout << disks << ": "<< start << "-->" << end << endl; else{ towers(disks-1,start,tmp,end); cout << disks << ": "<< start << "-->" << end << endl; towers(disks-1,tmp,end,start); } } 如果輸入為3那這個副程式會如何執行呢? 為什麼會先印出1:1-->2 ??這是印哪一行阿? 還有下一步2:1-->3 ??這個是怎麼跑的?
系統時間:2024-05-06 22:52:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!