c语言中怎么用递归法求汉诺塔

avatar
作者
筋斗云
阅读量:0

汉诺塔问题是一个经典的递归问题,可以使用递归方法来求解。下面是一个使用C语言编写的求解汉诺塔问题的程序示例:

#include   void hanoi(int n, char from_rod, char to_rod, char aux_rod) {     if (n == 1) {         printf("Move disk 1 from rod %c to rod %cn", from_rod, to_rod);         return;     }          hanoi(n-1, from_rod, aux_rod, to_rod);     printf("Move disk %d from rod %c to rod %cn", n, from_rod, to_rod);     hanoi(n-1, aux_rod, to_rod, from_rod); }  int main() {     int num_disks = 3; // 汉诺塔的盘数     hanoi(num_disks, 'A', 'C', 'B'); // 将num_disks个盘子从A杆移动到C杆     return 0; } 

在上面的代码中,hanoi函数使用递归的方式来解决汉诺塔问题。参数n表示盘子的数量,from_rodto_rodaux_rod分别表示三根柱子的标识(A、B、C)。在每一次递归调用中,首先将n-1个盘子从起始柱子移动到辅助柱子,然后将第n个盘子从起始柱子移动到目标柱子,最后将n-1个盘子从辅助柱子移动到目标柱子。通过递归调用,可以实现将所有盘子从起始柱子移到目标柱子的操作。

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!