一、问题描述
法国数学家爱德华·卢卡斯曾编写过一个关于印度的古老传说:在世界中心贝拿勒斯的圣庙里,一块黄铜板上插着三根宝石针,印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。这就是汉诺塔问题。
二、解题思路
针对这个问题,首先考虑其最小步数。设有n个金片的汉诺塔问题的最小步数为F(n),则最小步数为:
人们通常利用递归的方法求解汉诺塔问题。递归程序的实现比较简单,但是难于理解。下面给出python3的递归程序:
def 汉诺塔(count, 开始柱, 过渡柱, 目标柱)