重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#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); } }