溫馨提示×

C#怎么利用遞歸算法解決漢諾塔問題

c#
小億
128
2024-03-02 19:50:32
欄目: 編程語言

漢諾塔問題是經(jīng)典的遞歸問題,可以通過遞歸算法來解決。以下是使用C#編寫的漢諾塔問題的遞歸算法示例:

using System;

class MainClass {
    public static void Main (string[] args) {
        int n = 3; // 漢諾塔的盤子數(shù)量
        Hanoi(n, 'A', 'B', 'C');
    }

    // 遞歸函數(shù),將n個盤子從A經(jīng)過B移動到C
    static void Hanoi(int n, char source, char auxiliary, char target) {
        if (n == 1) {
            Console.WriteLine($"移動盤子 {n}{source}{target}");
        } else {
            Hanoi(n - 1, source, target, auxiliary);
            Console.WriteLine($"移動盤子 {n}{source}{target}");
            Hanoi(n - 1, auxiliary, source, target);
        }
    }
}

在上面的示例中,我們定義了一個Hanoi函數(shù),它接受三個參數(shù):盤子數(shù)量n,源柱子source,輔助柱子auxiliary和目標(biāo)柱子target。然后使用遞歸調(diào)用來實現(xiàn)漢諾塔問題的解決。

你可以在Main函數(shù)中設(shè)置漢諾塔的盤子數(shù)量n,然后調(diào)用Hanoi函數(shù)來打印出移動每個盤子的步驟。

0