步骤②:将第N个盘从座柱A搬动到座柱C 步骤③:将(n-1)个盘从座柱B搬动座柱C,在座柱A的帮助 下
移动规则是每次只能搬动一个盘,所以搬动(n-1)个盘时, 肯定需要另一个柱子帮助。当n=1时,也就是搬动一个盘, 那只要直接将这个盘从座柱A搬到座柱C就可以了。
2020年10月2日
7
授课人:杨鹏
(1)汉诺塔的算法流程图
第28课 递归算法及程序实现
2020年10月2日
授课人:1 杨鹏
2020年10月2日
高中信息术必修2:算法与程序设计
1.汉诺塔问题。相传古代东方有一座寺 庙,庙内有三根座桩,第一根座桩上 叠有一摞64个中心带孔、直径各不相 同的圆盘片,这些圆盘片叠成塔状, 即越上面的盘片的直径越小。要把这 64个盘片从第一根座桩搬到第三根座 桩上,搬动的规则如下: (1)一次只能从有盘片的座桩上取 走一个盘片; (2)被取走的盘片必须马上放到另 一根座桩上; (3)任何一根座桩上如果有一个以 上盘片,则这些盘片必须呈直径上小 下大的塔状。 需要搬动多少次才能把64个盘片从第 一根座桩搬到第三根座桩上? 2.用 递归算法计算n的阶乘n!。
Else Call hanoi(n - 1, a, b, c) '搬动N-1个盘从座柱A到座柱B,在 座柱C帮助下 num = num + 1 List1.AddItem (Str(num) + " " + a + " -> " + c) Call hanoi(n - 1, b, c, a) '搬动N-1个盘从座柱B到座柱C,在 座柱A帮助下 End If End Sub
递归算法的特点:递归过程一般通过函数或 子过程来实现。