c语言怎么实现汉诺塔

829
2024/1/27 19:52:03
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

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;
    printf("Enter the number of disks: ");
    scanf("%d", &n);
    hanoi(n, 'A', 'C', 'B');
    return 0;
}

该程序使用递归函数hanoi来实现汉诺塔。该函数接受四个参数:n表示要移动的盘子数目,from表示起始柱子,to表示目标柱子,aux表示辅助柱子。

递归的终止条件是当n等于1时,直接将盘子从起始柱子移动到目标柱子。否则,先将n-1个盘子从起始柱子移动到辅助柱子,然后将最后一个盘子从起始柱子移动到目标柱子,最后将n-1个盘子从辅助柱子移动到目标柱子。

main函数中,用户输入要移动的盘子数目,然后调用hanoi函数来执行移动操作。

注意:以上代码仅为示例,没有进行输入验证和错误处理。在实际应用中,应该考虑输入的有效性和错误情况的处理。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: c语言给数组赋值的方法有哪些