永发信息网

C语言汉诺塔递归算法,图片中框框中加上之后为甚么会出现错误呢

答案:2  悬赏:10  手机版
解决时间 2021-02-13 06:47


#include

void move(int n,char a,char b,char c)
{
//
if(n==1)
printf("1=%c,2=%c,3=%c\n",a,b,c);
printf("========1#%c->%c\n",a,c); //当n只有1个的时候直接从a移动到c
else
{
move(n-1,a,c,b); //第n-1个要从a通过c移动到b
printf("1=%c,2=%c,3=%c\n",a,b,c);
printf("\t%d#%c->%c\n",n,a,c);
move(n-1,b,a,c); //n-1个移动过来之后b变开始盘,b通过a移动到c,这边很难理解
}
}

main()
{
int n;
printf("请输入要移动的块数:");
scanf("%d",&n);
move(n,'a','b','c');
}



最佳答案
加上if下面就两行了 
需要加大括号的
 if(n==1)
 {
        printf("1=%c,2=%c,3=%c\n",a,b,c);
        printf("========1#%c->%c\n",a,c);    //当n只有1个的时候直接从a移动到c
 }不加 if就只管一行

下面的else就成了孤魂野鬼了
全部回答

#include

#define maxstack 10  

int c = 1;

struct hanoi { int n; char x, y, z; };

void move(char x, int n, char y) { printf("%d. move disk %d from %c to %cn", c++, n, x, y); }

void hanoi(int n, char x, char y, char z) { if (1 == n) move(x, 1, z); else { hanoi(n - 1, x, z, y); move(x, n, z); hanoi(n - 1, y, x, z); } }

void push(struct hanoi *p, int top, char x, char y, char z,int n) { p[top+1].n = n - 1; p[top+1].x = x; p[top+1].y = y; p[top+1].z = z; }

void unreverse_hanoi(struct hanoi *p) { int top = 0;

while (top >= 0) { while (p[top].n > 1) {    push(p, top, p[top].x, p[top].z, p[top].y, p[top].n);    top++; } if (p[top].n == 1) {    move(p[top].x, 1, p[top].z);    top--; } if (top >= 0) {    move(p[top].x, p[top].n, p[top].z);    top--;    push(p, top, p[top+1].y, p[top+1].x, p[top+1].z, p[top+1].n);    top++; } } }

int main(void) { int i; printf("reverse program:n"); hanoi(3, 'x', 'y', 'z'); printf("unreverse program:n"); struct hanoi p[maxstack]; c = 1; p[0].n = 3; p[0].x = 'x', p[0].y = 'y', p[0].z = 'z'; unreverse_hanoi(p);

return 0; }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
金家村村地址有知道的么?有点事想过去
【焦化废水】一吨焦炭产生多少焦化废水
吃饭前念祷告是哪个国家的习惯
泰来村村地址在什么地方,想过去办事
怡佳仁休闲食品量贩店师苑路店怎么去啊,有知
标准色卡英文怎么说
一楼的下水可以改吗?施工难度大不?
城南村村怎么去啊,我要去那办事
求一首英文歌名,应该最近上过榜。mv讲的是一
Caroline有什么含义?RT
刚用指纹锁,想试一试,不知为什么,上面显示
沧州现在比较好的眼镜店有哪些
高州市石板镇卫生院怎么去啊,有知道地址的么
微信ALUY666的位置
我最近刚开始抽烟、每次抽就头晕、全身无力、
推荐资讯
宏鹏御庭酒店停车场地址在哪,我要去那里办事
依莎鞋业地址在什么地方,想过去办事
缴纳生育保险满一年后才可以报销吗
2012年10月,中国作家莫言获得诺贝尔文学奖。
你好,我QQ 被冻结了,QQ 安全中心也登不上,
盘山电视台广告部地址好找么,我有些事要过去
【减压阀调节】如何调整减压阀?
海阳市盘石店镇地址在什么地方,想过去办事
仕平牙科地址在哪,我要去那里办事
带鱼先低温冷藏、高温油炸,接着烹饪。骨头里
求:索契冬奥会短道速滑男子5000米接力颁奖仪
可不可以把手机百度里面的东西复制到word文档
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?