一、实例说明
汉诺塔问题:传说在古代印度的贝拿勒斯圣庙里,安放了一块黄铜板,板上插了三根宝石柱,在其中一根宝石柱上,自上而下按由小到大的顺序串有64个金盘。这就是汉诺塔游戏。要求将左边柱子上的64个金盘按照下面的规则移到右边的柱子上。如图2-1所示:
规则:
a) 一次只能移一个盘子。
b) 盘子只能在三个柱子上存放。
c) 任何时候大盘不能放在小盘上面。
图2-1 汉诺塔示意图
二、基础知识点
汉诺塔是非常经典的关于递归程序的例子,读者如果将来要从事程序开发工作,则务必要掌握递归程序的设计方法。递归是程序设计中一个强有力的工具,有很多数学函数是递归定义的,比如大家熟悉的阶乘函数。
下面来简要分析一下汉诺塔问题是如何通过递归来解决的。
简化问题: