汉诺塔C语言

谭浩强书的汉诺塔没看懂,以下有几个问题:1,请大家注意看main函数的类型是int型,我真不知道谭教授是怎么运行起来的,我在网上找到相同的代码编译居然通过了。。。。2.流... 谭浩强书的汉诺塔没看懂,以下有几个问题:
1,请大家注意看main函数的类型是int型,我真不知道谭教授是怎么运行起来的,我在网上找到相同的代码编译居然通过了。。。。
2.流程问题也许是我搞错了,先输入个3,调用hanoi函数给实参m,A,B,C,因为n!=1,else调用hanoi函数这时进入第二次调用这时形参one等于A,two等于c,three等于b,再循环又到了else...调用hanoi函数这时one two three重新对应a,b,c,这时n == 1,所以调用move函数输出a->c,这时调用完move后,由于else不执行,又因为之前在else里调用了hanoi函数,所以返回到hanoi下面的move继续执行这时我就不解了,move(one,three)?难道调用move函数继续输出a->c吗?可是正确的运行结果是a->b啊,所以到这里我就看不下去了。请大神解答疑惑补充流程或重新梳理流程
#include<stdio.h>
int main()
{
void hanoi(int n,char one,char two,char three);
int m;
printf("input the number of diskes:");
scanf("%d",&m);
printf("The step to moving %d diskes:\n",m);
hanoi(m,'A','B','C');
}
void hanoi(int n,char one ,char two,char three)
{
void move(char x,char y);
if(n==1)
move(one,three);
else
{
hanoi(n-1,one,three,two);
move(one,three)
hanoi(n-1,two,one,three);
}
}

void move(char x,char y)
{
printf("%c-->%c\n",x,y);
}
展开
 我来答
百度网友fc027fc
推荐于2016-08-08 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3160
采纳率:83%
帮助的人:746万
展开全部
  1. 编译器一般会在main函数的末尾默认加上return 0;的。



h(3,'A','B','C')

        a.h(2,'A','C','B')

                 h(1,'A','B','C')-----------------输出A-->C

        b.mov('A','B')------------------------- 输出A-->B

                 h(1,'C','A','B') ----------------输出C-->B

move('A','C') )----------------------------------输出A-->C

        a.h(2,'B','A','C')

                   h(1,'B','C','A') )------------------输出B-->A

        b.move('B','C')  )------------------------输出 B-->C   

                   h(1,'A','B','C')-------------------输出A-->C

更多追问追答
追问
请把流程用文字详细的说一下越详细越好从h(1,'A','B','C')输出A-->C后面开始说用文字叙述。开头:这时n-1为1,作为实参发送给n,因为n == 1,所以调用move函数输出A->C,因为if语句执行了所以else不执行,返回什么的。接下来的流程我简直像乱麻了,请把接下来的流程写下请详细写并发到我的邮箱里974308208@qq.com,如果不懂继续问,如果懂了再加50分谢谢
追答

百度网友af6bb57
2015-04-21 · TA获得超过537个赞
知道小有建树答主
回答量:789
采纳率:100%
帮助的人:218万
展开全部
首先,int main()

返回值是指函数结束时返回给宿主环境的一个值。
int main()返回整型值,void main()返回空值。
在一些操作系统下,void main()是不合法的,所以一般要写int main()。
返回值有助于判断函数运行状况或参与运算(就是说这个函数是不是正常运行)

(2)这是一个递归的应该,你要重最后的结束推想到你的前面来。这样思路会比较清晰
追问
请认真看完我第二个流程的叙述过程,并解答疑惑谢谢
追答
hanoi(n-1,one,three,two);是把“one”上的n-1个往“two”上移,
接着move(one,three);
然后是hanoi(n-1,two,one,three)即把“two”上的n-1个往“three”上移;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式