BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #84806同步于 2014/12/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

【C语言问题求解】汉诺塔程序

yu1336199790
2014/12/20镜像同步3 回复
# include <stdio.h>void hannuota( int n,char X,char Y,char Z ){/* 用伪算法描述: if(n=1) 直接将n从X移动到Z else { 先将前n-1个盘子从X借助Z移动到Y 再将第n个盘子从X移动到Z 最后将前n-1个盘子从Y借助X移动到Z }*/ if (1 == n) printf("将第%d个盘子从%c移动到%c\n",n,X,Z); else { hannuota(n-1,X,Z,Y); printf("将第%d个盘子从%c移动到%c\n",n,X,Z); hannuota(n-1,Y,X,Z); }} int main(void){ int n; char A,B,C;//定义三个柱子A,B,C printf("输入盘子的个数:"); scanf("%d",&n); hannuota(n,'A','B','C');//参数表示:有n个盘子,从A借助B移动到C return 0;} 这是看到的 为什么伪代码里的“再将第n个盘子从X移动到Z”printf语句也不难做到啊 他不只是个输出吗???大家帮我看哈 才开始接触递归 学的不是很好 如果这个解释有误,求详解??? 求汉诺塔程序的详解???、
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
nuanyangyang机器人#1 · 2014/12/20
你没发现所有的情况都只是输出吗?
yu1336199790机器人#2 · 2014/12/20
【 在 nuanyangyang 的大作中提到: 】 : 你没发现所有的情况都只是输出吗? 但是前n-1个移动的时候用的就是递归啊 为什么移动第n个就用输出呢
yu1336199790机器人#3 · 2014/12/20
各位大神教教我吧 才开始接触 有点弄不明白