中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

c語言漢諾塔遞歸算法怎么實現

小億
94
2023-10-30 11:42:56
欄目: 編程語言

下面是使用遞歸算法實現C語言版本的漢諾塔問題:

#include <stdio.h>

void hanoi(int n, char from, char to, char aux) {
    if (n == 1) {
        printf("Move disk 1 from %c to %c\n", from, to);
        return;
    }
    hanoi(n - 1, from, aux, to);
    printf("Move disk %d from %c to %c\n", n, from, to);
    hanoi(n - 1, aux, to, from);
}

int main() {
    int n = 3; // 將三個盤子從A移動到C
    hanoi(n, 'A', 'C', 'B');
    return 0;
}

輸出結果:

Move disk 1 from A to C
Move disk 2 from A to B
Move disk 1 from C to B
Move disk 3 from A to C
Move disk 1 from B to A
Move disk 2 from B to C
Move disk 1 from A to C

該算法使用遞歸的思想,將問題分解為更小的子問題。首先將 n-1 個盤子從起始柱子(from)移動到輔助柱子(aux),然后將最大的盤子從起始柱子(from)移動到目標柱子(to),最后將 n-1 個盤子從輔助柱子(aux)移動到目標柱子(to)。通過遞歸調用,將問題規模縮小,直到只剩下一個盤子需要移動。

0
海丰县| 建始县| 萍乡市| 文化| 白沙| 饶平县| 虎林市| 安康市| 新龙县| 太原市| 崇阳县| 昌平区| 巨野县| 收藏| 扎囊县| 宁波市| 泾阳县| 吉安县| 桂平市| 贡觉县| 新疆| 广德县| 章丘市| 广饶县| 缙云县| 奉贤区| 六安市| 磐石市| 新沂市| 和田市| 奉节县| 石首市| 新昌县| 收藏| 从化市| 西丰县| 同德县| 修武县| 合阳县| 舒城县| 泸水县|