C语言递归汉诺塔每一步详解用递归实现汉诺塔

(步骤1)  如果是一个盘子

        直接将a柱子上的盘子从a移动到c

(步骤2)    先将a柱子上的n-1个盘子借助c移动到b(图1

         代表将a柱子仩的盘子借助c柱子移动到b柱子,这里调用函数的时候是将a柱子上的n-1

         盘子借助c柱子移动到b柱子。所以这里需要将位置调换一下hanoi(n-1,a,c,b)

(步骤3)    此时移动完如图1,但是还没有移动结束首先要将a柱子上的最后一个盘子(第n个)盘子直接移动到c(图2

(步骤4)    最后将b柱子上的n-1个盘子借助a移动到c(图3

这样递归算法就完成了。如果第一遍没懂仔细读三四遍应该就没问题了。

}

汉诺塔问题是递归中的经典通過简单的递归思想解决了复杂的问题。

古代有一个梵塔塔内有3个座A、B、C,开始时A座上有64个盘子盘子大小不等,大的在下小的在上。有一个老和尚想把这64个盘子从A座移到C座但规定每次只允许移动一个盘,且在移动过程中在3个座上都始终保持大盘在下小盘在上。在移动过程中可利用B座
请编程序输出移动这些盘子的详细步骤。

这个问题的框架已经给你搭好了只需要在 else 部分写三句话(3个动作,其中2个和 n-1 有关)就可以了

你一定要好好琢磨琢磨,如果能想出来你的C语言递归汉诺塔每一步详解功力会有巨大的提升哦!

下面有答案!看看和你想的是不是一样。

}

我要回帖

更多关于 C语言递归汉诺塔每一步详解 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信