三个盘子从上到下为123
1.将前 n-1 个盘子从起始柱子(A)通过目标柱子(C)移动到辅助柱子(B);
2.将剩下的最后一个盘子从起始柱子(A)直接移动到目标柱子(C);
3.最后将在第一步移动到辅助柱子(B)上的 n-1 个盘子,通过起始柱子(A)移动到目标柱子(C)上。
#include <stdio.h>
//from_rod ,A起始柱子
//from_to C 目标柱子
//from_aux B辅助柱子
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 %c\n", from_rod, to_rod);
return;
}
hanoi(n - 1, from_rod, aux_rod, to_rod);
printf("Move disk %d from rod %c to rod %c\n", n, from_rod, to_rod);
hanoi(n - 1, aux_rod, to_rod, from_rod);
}
int main() {
int n = 3; // 汉诺塔的盘子数量
hanoi(n, 'A', 'C', 'B');
return 0;
}