#include <stdio.h>
void hanoi(int n, char A, char B, char C ){
if (n == 1) {
printf("%c->%c\n", A, C);
} else {
hanoi(n - 1, A, C, B);//将除了最大的一个圆盘外的(n-1)个圆盘从源柱子(A)经辅助柱子(B
)移动到目标柱子(C
)。这一步通过递归调用hanoi(n - 1, A, C, B)
来实现
printf("%c->%c\n", A, C);//将剩余的一个最大圆盘从源柱子(A)直接移动到目标柱子(C
)。这是因为当剩下一个圆盘时,可以直接将它从源柱子移动到目标柱子
hanoi(n - 1, B, A, C);//将在第一步中移动到辅助柱子的(n-1)个圆盘,从辅助柱子(B
)经源柱子(A)移动到目标柱子(C
)。
}
}
int main() {
int n;
printf("输入盘子数:");
scanf("%d", &n);
printf("移动步骤:\n");
hanoi(n, 'A', 'B', 'C');
return 0;
}