[問題] 河內塔問題

看板C_and_CPP作者 (小胖肚子餓)時間11年前 (2012/07/31 16:54), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串2/3 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 問題(Question): 程式顯示出來是 1: 將第 1 個圓盤由 A 移到 C 2: 將第 2 個圓盤由 A 移到 B 但我想顯示成 32,,1 3, 2, 1 請問要怎麼修改程式碼 謝謝!! 程式碼(Code):(請善用置底文網頁, 記得排版) #include <stdio.h> #include <stdlib.h> void hanoi(int, char, char, char); int time = 0; int main(void) { int n; printf("請輸入河內塔的高度:"); scanf("%d", &n); hanoi(n, 'A', 'B', 'C'); printf("移動 %d 層河內塔共需移動 %d 次\n", n, time); system("pause"); } void hanoi(int n, char A, char B, char C) { if (n == 1) { printf("%d: 將第 %d 個圓盤由 %c 移到 %c\n", ++time, n, A, C); } else { hanoi(n - 1, A, C, B); printf("%d: 將第 %d 個圓盤由 %c 移到 %c\n", ++time, n, A, C); hanoi(n - 1, B, A, C); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.53.46

07/31 17:01, , 1F
一個是遞迴的trivial case的輸出
07/31 17:01, 1F

07/31 17:02, , 2F
一個是現在狀態的輸出
07/31 17:02, 2F

07/31 17:04, , 3F
請問該怎麼修改才可以是現在狀態的輸出??
07/31 17:04, 3F

07/31 18:33, , 4F
宣告3個stack去存?
07/31 18:33, 4F
文章代碼(AID): #1G5vrUg6 (C_and_CPP)
文章代碼(AID): #1G5vrUg6 (C_and_CPP)