/*----------------------------
问题拆解:
如果n > 1
1、把n-1个盘子移动从A柱,移动到B柱
2、把n号盘,从A柱移动到C柱
3、把n-1个盘子从B柱移动到C柱
如果n = 1时:
把盘子直接移动到C柱
*/----------------------------
#include <stdio.h>
void hanoi(int n, char pillar_start[], char pillar_mid[], char pillar_end[]) {
if (n == 1) {
printf("从%s移动到%s\n", pillar_start, pillar_end);
return;
}
hanoi(n-1, pillar_start, pillar_end, pillar_mid); //第一步:从A柱移到B柱,C柱是中转柱,放中间
printf("从%s移动到%s\n", pillar_start, pillar_end); //第二步:跟盘子为一个时一样
hanoi(n-1, pillar_mid, pillar_start, pillar_end); //第二步:从B柱移到C柱,此时A柱是中转柱,放中间
}
int main(void) {
char name1[] = "A柱";
char name2[] = "B柱";
char name3[] = "C柱";
int n = 4; //盘子数
hanoi(4, name1, name2, name3);
return 0;
}