编写有关汉诺塔程序的问题

hooligan00011 2003-10-15 07:53:21
哪位高手能解释一下以下意思(汉诺塔程序思路是怎么样的?):
void move(char getone,char putone)
{ printf("%c-->%c\n",getone,putone);
}
void hanoi(int n,char one ,char two ,char three)
{ if(n==1)move(one,three);
else
{hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}
}
main()
{ hanoi(3,'A','B','C');
}
...全文
104 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
马大哈昆 2003-10-15
  • 打赏
  • 举报
回复
递归。
到google找一下就可以了,讲的很清楚的。
Huaraco 2003-10-15
  • 打赏
  • 举报
回复
这是一道讲述递归调用的例子:

意思就是说,现将n-1个盘从a主经c柱移到b柱,然后将a住剩下的一个盘移到c柱,a->c
然后再将b住上的n-1个盘经c柱移到a柱反复调用。
mfcer2 2003-10-15
  • 打赏
  • 举报
回复
在google上搜索可以找到很多的!

http://www.google.com
gambolgs 2003-10-15
  • 打赏
  • 举报
回复
对于很多的盘子,总可以看作两个盘子——想象成把上面的n-1个盘子“捆”成一个同时移动。
而对于2个盘子的情况,就是a->c, a->b, b->c
ionlic 2003-10-15
  • 打赏
  • 举报
回复
把n个盘子, 从a-->c。
1 考虑把n-1个盘子从a-->b, 然后把a柱子上的最底下的盘子也就是第n号盘子移动到c
2 然后考虑把n-2个盘子从b-->a,然后把b柱子上的最底下的盘子也就是第n-1号盘子移动到c

3 以此类推…… 这就是递规
wglfuture 2003-10-15
  • 打赏
  • 举报
回复
前面是定义函数,以后好调用。后面是主函数。调用前面所设的函数。这只是一个小小的交换,但程序还很长很长

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧