對C 30河內塔問題的疑問

發布 科技 2024-06-08
5個回答
  1. 匿名使用者2024-01-29

    沒有遞迴嗎?

    每次遞迴時,你都會 prinif。

    hanoi(n-1,one,three,two);

    move(one,three);

    hanoi(n-1,two,one,three);

    在這裡,b c 不是在變化嗎? 這並不難理解。

  2. 匿名使用者2024-01-28

    問清華大學權威教授。

  3. 匿名使用者2024-01-27

    這是乙個遞迴函式,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 再一層一層回來,自己體驗一下。

    如何執行和如何輸出取決於我之前的巨著解釋。

  4. 匿名使用者2024-01-26

    遞迴程式一定不是研究它是如何執行的,而是要知道它的退出條件,他的深度遍歷條件,在開始學習遞迴的時候肯定會很迷茫,建議大家多做深度搜尋題,自然會懂得遞迴,這裡有一些我參加比賽時練習過的問題, 從最初的難度一點一點的提公升(ps:我一開始沒有寫遞迴,現在很熟練了)有需要的可以給你,不需要採用。

  5. 匿名使用者2024-01-25

    如果你看一下關於C語言遞迴呼叫的章節,你就會看到它。

相關回答
4個回答2024-06-08

# include

void hannuota(int n,char a,char b, char c); >>>More

7個回答2024-06-08

#include

void move(int n,char x,char y); >>>More

4個回答2024-06-08

n 板 a[0] a[n-1]。

在 B 的幫助下從 A 移動到 C >>>More

4個回答2024-06-08

遞迴相互疊加,函式呼叫自己,直到出現約束。 該函式自行呼叫自己,可以理解為 sum = sum + m; 為此新增乙個迴圈以找到總和; 意思是同樣的自我調諧,河內塔更深,你可以用遞迴的方式找到所有數字的總和,多學幾遍,你自然會。 1. >>>More

13個回答2024-06-08

,++類運算子是右繫結原則(不加加的左繫結原則),即*p++的等價物是*(p++)p->next,*+p->next等價。 >>>More