在C語言中求出河內塔的非遞迴演算法

發布 科技 2024-03-10
4個回答
  1. 匿名使用者2024-01-26

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

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

    首先,確定 n 的奇偶校驗,如果 n%2=1

    for i=n-1 to 2 i-=3

    if n-2>0

    將 A[I-2] 從 A 移動到 C

    將 A[i-1] 從 A[i-1] 移動到 B,將 A[i-2] 從 C 移動到 A[i],將 A[i] 從 A[I] 移動到 C

    if n-2>0

    將 A[I-1] 從 B, AI-1] 移動到 C,將 A[I-2] 從 A, Endif 移至

    endfor

    否則 n 是偶數,類似。

    endif

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

    A、B、C三個塔,先將A塔上的N-1板移到C,再將1移到B,再將剩餘的N-1移到A

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

    hanot (n-1,b,a,c);(說明:在A塔的幫助下,將B塔的(N-1)移動到C塔)。

    為了在C的幫助下實現從A到B的n個磁碟

    思路如下:首先考慮極限 當只有乙個磁碟時,磁碟可以直接來自乙個 ->b。

    當有 2 個板時,將 A -> C 的 1 個板放入 2 個板,然後放入 2 個板 A->B,然後放入 C - B 的 2 個好板。

    當有 n 個磁碟時,借助 B 將 n-1 個磁碟移動到 C,然後將 N 個磁碟從 A 移動到 >B。

    此時,只要在A的幫助下將n-1從C移動到B,那麼N-2磁碟就可以在B的幫助下移動到A。

    遞迴,即在奔跑的過程中稱呼自己。

    什麼是遞迴:

    1.子問題必須與原始問題相同且更簡單;

    2.不能無限呼叫,必須有出口,簡化為非遞迴狀態處理。

    在數學和電腦科學中,遞迴是指由乙個(或多個)簡單基本情況定義的一類物件或方法,並規定所有其他情況都可以簡化為它們的基本情況。

    以上內容是指:百科全書-遞迴公式。

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

    河內塔遞迴演算法是演算法分析。該演算法的實現可以簡單地分為三個步驟:將 n-1 個板從 A 移動到 B; 將第 n 個板從 A 移動到 C,將 n-1 板從 B 移動到 C。

    河內塔**及其應用

    傳說在古印度的聖殿中,有一種叫做河內塔的遊戲。 遊戲在乙個銅板裝置上進行,有三根杆(編號為A、B、C),64個金板從下到上,從大到小依次放置。

    遊戲的目標:將 A 欄上的所有圓盤移動到 C 欄上,並仍然以相同的順序堆疊它們。 操作規則:

    一次只能移動一塊板,在移動過程中,三根杆始終保持在底部,小板在頂部,並且在操作過程中可以將板放在任意一根杆A、B和C上。

    河內塔問題就是乙個典型的遞迴方法解決的問題,在實際教學中,在傳統教學方法的基礎上,可以採用計算機輔助教學對演算法教學進行模擬和演示,使學生更容易接受和理解遞迴演算法的思想,不僅可以提高學生的學習興趣, 同時也取得更好的教學效果。

相關回答
4個回答2024-03-10

# include

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

7個回答2024-03-10

#include

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

9個回答2024-03-10

對於乙個數是否為素數的要求,將這個數除以從二到這個數的平方,得到最大的整數,如果不可整除,則表示該數是素數。

2個回答2024-03-10

至於遞迴,你可以把它想象成一次執行乙個句子。 當您需要儲存狀態時,系統會自動使用堆疊為您儲存。 讓我們以你說的例子為例: >>>More

7個回答2024-03-10

以 358934760892734899+38960302975237462 為例:

1.計算結果的位數。 >>>More