hanoi塔算法
更新时间:2023-11-17
答案:Hanoi塔问题是一个经典的递归问题,其算法如下:1. 将n-1个盘子从A柱移(yí)动(dòng)到B柱。2. 将第n个盘子从A柱移(yí)动(dòng)到C柱。3. 将n-1个盘子从B柱移(yí)动(dòng)到C柱。其中,移(yí)动(dòng)盘子的规则是:每次只能移(yí)动(dòng)一个盘子,且大盘子不能放在小盘子上面。递归终止条件是只有一个盘子需要移(yí)动(dòng),此时直接将其从A柱移(yí)动(dòng)到C柱即可。代码实现如下:void hanoi(int n, char A, char B, char C) { if (n == 1) { printf(Move disk %d from %c to %c\, n, A, C); return; } hanoi(n-1, A, C, B); printf(Move disk %d from %c to %c\, n, A, C); hanoi(n-1, B, A, C);}其中,A、B、C分别表示三个柱子的名称。