題組內容
三、下面為一以 C 語言撰寫之副程式,用來解決河內塔(tower of Hanoi)問題。
⑷上面 tower 副程式中的“if (n==1)”如果改成“if (n==0)”,並且主程式呼叫 tower(8, 'A', 'B', 'C'),請問輸出總共會有多少行?(4 分)
詳解 (共 1 筆)
詳解
如果在副程式中將 if (n==1) 改成 if (n==0) 並且主程式呼叫 tower(8, 'A', 'B', 'C'),輸出的總行數仍然會是 255 行。這是因為在遞迴過程中,當 n 達到 1,就會執行一次打印操作,然後返回。將條件改為 n == 0 不會改變打印操作的次數,只是在 n 為 1 時不再檢查這個條件。因此,遞迴的行為和打印的次數不變。