搜索

c语言的一个递归汉诺问题将A柱上的碟子移到C柱每次只能移动一片

gecimao 发表于 2019-04-18 14:25 | 查看: | 回复:

  c语言的一个递归汉诺问题,将A柱上的碟子移到C柱,每次只能移动一片,且必须保证上面的碟子比下面的小

  c语言的一个递归汉诺问题,将A柱上的碟子移到C柱,每次只能移动一片,且必须保证上面的碟子比下面的小

  实在不理解这个问题:1、首先,我知道这里是利用递归函数将A柱上N-1个碟片移动到B柱(借助C柱),最后将A柱的最后一片移到第三个。然后反过来将B柱上的碟片移动到C柱上(借助A柱)。2...

  实在不理解这个问题:1、 首先,我知道这里是利用递归函数将A柱上N-1个碟片移动到B柱(借助C柱),最后将A柱的最后一片移到第三个。 然后反过来将B柱上的碟片移动到C柱上(借助A柱)。2、 如果是只有三片,的确是遵循以上规律,但是4片的话,A柱第一片是移动到B柱上的。那岂不是不能借助这个规律了?程序是怎么判断是先放在B柱还是先放在C柱的?3、 Main函数中已经将hanoi的实参定义了为a,b,c。 那hanoi函数中 one, three, two和abc的对应关系是怎么做到的?好难理解这种递归问题啊。

  谢谢你的回答,其实我能理解你的方式,把n-1和n看作为两个整体,再把n-2和n-1看做两个整体。但是其实我还是有两个问题:

  1、 比如我有4个盘子在第一根柱子,按照你的方式我进行递推,担当3根柱子上的都有盘子的时候我就没有办法推下去了。

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  三个盘子时,因为我们能够将上面的两个盘子看成一个整体,所以相当于两个盘子的问题。

  将上面两个看成一个整体后,我们可以发现,原来移动一个盘子需要1次,移动这个整体需要3次(恰好是移动两个盘子的总步数),但是至少都可以通过有限的步数自由移动。

  同理,当有四个盘子时,将上面的三个看成一个更大的整体,这个整体移动一次需要7步(移动三个盘子的总步数),这样就可以将之看成是两个整体的移动,先将整体移到空柱上,然后移动最底下的盘子至目的柱,再将整体移过来,总共 2*7+1 = 15 步。

本文链接:http://windsorflowers.net/diguixiangliangzhiling/121.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部