#include
//汉诺塔问题
void hannuota(int n,char a,char b,char c);
int main(void){
char ch2 = 'A';
char ch3 = 'B';
char ch4 = 'C';
int n = 0;
printf("请输入要移动的盘子的个数:");
scanf("%d",&n);
hannuota(n,ch2,ch3,ch4);
return 0;
}
/*
如果是一个盘子
直接将A柱子上的盘子 从A移到C
否则
先A柱子上的n-1个盘子借助C移到B
再将A柱子上的最后一个盘子从A移到C
然后将B柱子上的n-1个盘子借助A移到C
*/
//将盘子从a借助b移到c
void hannuota(int n,char a,char b,char c){
if(n == 1){
printf("将编号%d盘子从%c移到%c\n",n,a,c);
}else{
//先A柱子上的n-1个盘子借助C移到B
hannuota(n-1,a,c,b);
//再将A柱子上的最后一个盘子从A移到C
printf("将编号%d盘子从%c移到%c\n",n,a,c);
//然后将B柱子上的n-1个盘子借助A移到C
hannuota(n-1,b,a,c);
}
}
当前题目:汉诺塔问题c语言实现
网址分享:
http://cdxtjz.cn/article/peoegg.html