#include <stdio.h>
void move(int n, char A, char B, char C){
/*
如果是一个盘子.
直接将A上的盘子移动到C.
否则
先将A上的n-1个盘子移动借助C移动到B.
直接将A上的盘子从A移动到C.
最后将B上的n-1个盘子借助A移动到C.
*/
if(n ==1){
printf("将编号为%d的盘子从%c移动到%c\n", n, A, C);
} else {
move(n-1, A, C, B);
printf("将编号为%d的盘子从%c移动到%c\n", n, A, C);
move(n-1, B, A, C);
}
}
int main(void){
char ch1 = 'A';
char ch2 = 'B';
char ch3 = 'C';
int n;
printf("请输入盘子数:");
scanf("%d", &n);
move(n, ch1, ch2, ch3);
return 0;
}
汉诺塔(递归)
最新推荐文章于 2021-01-19 15:30:35 发布