返回信息流# 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语句也不难做到啊 他不只是个输出吗???大家帮我看哈 才开始接触递归 学的不是很好
如果这个解释有误,求详解??? 求汉诺塔程序的详解???、
这是一条镜像帖。来源:北邮人论坛 / cpp / #84806同步于 2014/12/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
【C语言问题求解】汉诺塔程序
yu1336199790
2014/12/20镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
【 在 nuanyangyang 的大作中提到: 】
: 你没发现所有的情况都只是输出吗?
但是前n-1个移动的时候用的就是递归啊 为什么移动第n个就用输出呢