-
沒有遞迴嗎?
每次遞迴時,你都會 prinif。
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
在這裡,b c 不是在變化嗎? 這並不難理解。
-
問清華大學權威教授。
-
這是乙個遞迴函式,move(m,'a', 'b', 'c'此函式要做的是在 B 的幫助下將 m 個磁碟從 A 傳輸到 C。 為此,有三個步驟,首先將 M-1 磁碟從 A 傳輸到 C 再到 B,然後將 M-1 磁碟傳輸到 C,最後在 A 的幫助下將 M-1 磁碟從 B 傳輸到 C。 完成這 3 個步驟後,您就完成了此功能的功能。
那麼如何在C的幫助下將M-1從A運輸到B,然後再將M盤運輸到C呢? 我們可以用遞迴來稱呼自己為 move(m-1,'a', 'c', 'b'這必須遵循函式的三個步驟,並保持遞迴,直到只有乙個磁碟,即 if(n==1)
1 的功能是將 n-1 塊板從 A 輸送到 B 個盤(除了第 n 個最大盤)。
2 的功能是將 n-1 圓盤從 B 通過 A 輸送到 C
執行 1 次後,當然是執行 3,執行後 3 次執行 2。 但是 1 和 2 是遞迴地稱呼自己,所以它們會一層一層往下走,去 n==1 再一層一層回來,自己體驗一下。
如何執行和如何輸出取決於我之前的巨著解釋。
-
遞迴程式一定不是研究它是如何執行的,而是要知道它的退出條件,他的深度遍歷條件,在開始學習遞迴的時候肯定會很迷茫,建議大家多做深度搜尋題,自然會懂得遞迴,這裡有一些我參加比賽時練習過的問題, 從最初的難度一點一點的提公升(ps:我一開始沒有寫遞迴,現在很熟練了)有需要的可以給你,不需要採用。
-
如果你看一下關於C語言遞迴呼叫的章節,你就會看到它。
遞迴相互疊加,函式呼叫自己,直到出現約束。 該函式自行呼叫自己,可以理解為 sum = sum + m; 為此新增乙個迴圈以找到總和; 意思是同樣的自我調諧,河內塔更深,你可以用遞迴的方式找到所有數字的總和,多學幾遍,你自然會。 1. >>>More