假设三根柱子分别为A B C,要将盘子由A搬到C,若只有一个盘子,直接搬到C即可,如果盘数超过两个,就按A->B、A ->C、B->C 来处理。
#include <stdio.h>
int sum = 0;
void hanoi(int n, char A, char B, char C) {
sum++;
if(n == 1) {
printf("Move sheet %d from %c to %c\n", n, A, C);
}
else {
hanoi(n-1, A, C, B);
printf("Move sheet %d from %c to %c\n", n, A, C);
hanoi(n-1, B, A, C);
}
}
int main() {
int n;
printf("Enter n: ");
scanf("%d", &n);
hanoi(n, 'A', 'B', 'C');
printf("%d\n", sum);
return 0;
}