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

溫馨提示×

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

小億
82
2024-06-11 13:38:35
欄目: 編程語言

漢諾塔問題是一個經典的遞歸問題,其解法如下:

#include <stdio.h>

void move(int n, char a, char b, char c) {
    if (n == 1) {
        printf("Move disk 1 from %c to %c\n", a, c);
    } else {
        move(n - 1, a, c, b);
        printf("Move disk %d from %c to %c\n", n, a, c);
        move(n - 1, b, a, c);
    }
}

int main() {
    int n;
    printf("Enter the number of disks: ");
    scanf("%d", &n);
    move(n, 'A', 'B', 'C');
    return 0;
}

在上面的代碼中,move函數是遞歸的關鍵,它接受四個參數:n表示當前要移動的盤子數量,a、b、c分別表示起始柱子、中間柱子和目標柱子。當n為1時,直接將盤子從起始柱子移動到目標柱子;當n大于1時,先將n-1個盤子從起始柱子移動到中間柱子,然后將第n個盤子從起始柱子移動到目標柱子,最后將n-1個盤子從中間柱子移動到目標柱子。

通過遞歸調用move函數,可以解決任意數量的盤子的漢諾塔問題。

0
搜索| 图们市| 泊头市| 德清县| 德保县| 清镇市| 崇阳县| 惠安县| 稷山县| 五华县| 铜山县| 洛扎县| 新密市| 金川县| 赤峰市| 通河县| 阳信县| 株洲县| 炉霍县| 临潭县| 吉木乃县| 崇明县| 汤原县| 綦江县| 长宁县| 威远县| 东方市| 衡山县| 石狮市| 栾城县| 乳源| 阳东县| 江门市| 津南区| 梁平县| 长乐市| 灵台县| 黄冈市| 永宁县| 武义县| 平舆县|