标题:[求助]汉诺塔问题苦思10小时以上,还不是不太理解。哪位大人是否可以帮忙解 ...
取消只看楼主
sjlrs
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-2-24
 问题点数:0 回复次数:1 
[求助]汉诺塔问题苦思10小时以上,还不是不太理解。哪位大人是否可以帮忙解答
void move(char x,char y)
{
 printf("%c-->%c\n",x,y);
}
void hanoi(int n,char a,char b,char c)
{
 if(n==1)move(a,c);
 else
  {
   hanoi(n-1,a,c,b);
   move(a,c);
   hanoi(n-1,b,a,c);
  }
}
main()
{
 int m;
 printf("input the number of diskes:");
 scanf("%d",&m);
 printf("The step to moving %3d diskes:\n",m);
 hanoi(m,'A','B','C');
 getch();
}

当n==2时,汉诺塔用递归移动的步骤都能理解了

,但n==3时,A-C, A-B, C-B, A-C,B-A, B-C,A-C,主要是不能理解递归时,C-B,B-A,B-C 是哪个函数做实参的。抱歉,头想的有点糊涂了,表达不太清楚
搜索更多相关主题的帖子: 汉诺塔 quot char 大人 hanoi 
2005-03-03 12:25
sjlrs
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-2-24
得分:0 
  hanoi(n-1,a,c,b); 这个递归是不是实现A塔到B塔的移动,他是如何实现C-B,B-A,B-C的
  hanoi(n-1,b,a,c); 这个递归是不是实现B塔到C塔的移动呢?
  
2005-03-03 12:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-12754-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.058811 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved