利用递归方法解决汉诺塔问题.pdfVIP

  • 3
  • 0
  • 约1.2千字
  • 约 2页
  • 2023-12-28 发布于宁夏
  • 举报

利⽤递归⽅法解决汉诺塔问题

利⽤递归⽅法解决汉诺塔(Hanoi)问题

⼀、汉诺塔问题

汉诺塔问题是⼀个经典的古典数学问题,它由三根柱⼦和若⼲个圆盘组成。

游戏规则如下:

1.每次只能移动⼀个圆盘

2.任何时候必须保证⼤圆盘在下,⼩圆盘在上

3.⽬的是在1,2条件下将⼀根柱⼦上所有圆盘转移到另⼀根柱⼦上。

⼆、递归算法

想要利⽤递归解决这个问题,⾸先我们要确定⼏个概念:

1、初始柱A也就是游戏开始时所有圆盘所在的柱⼦。

2、中间辅助柱B在转移过程中需要⽤到的辅助柱。

3、⽬标柱C转移的最终⽬标柱。

⾸先我们来看当圆盘只有两个时应该如何移动。

我们只需要将A柱的上⾯⼀个圆盘暂时放在B柱上,然后将A柱下⾯⼀个圆盘直接放在⽬标柱C上,最后再把B柱暂时存放的圆盘放到C柱

上。

然后我们以三个圆盘为例,确定另外⼀个概念:整体

在移动三个圆盘时,我们不妨假设上⾯两个圆盘为⼀个整体,把它看作为⼀个圆盘。那么解决问题的⽅法与只移动两个圆盘类似。

⽽在移动这个整体圆盘时,我们也需要⽤到与最开始只移动两个圆盘同样的⽅法,不同的只是⽬标柱。

不难联想,当圆盘个数变为n时,我们只需要多进⾏⼏次与上⾯同样的步骤,即可获得解决汉诺塔问题的⽅法。

接下来我们来看,如何在C语⾔中实现这个算法

三、利⽤C语⾔实现算法

文档评论(0)

1亿VIP精品文档

相关文档