前言
汉诺塔问题,是心理学实验研究常用的任务之一,相传是古印度寺庙中的一款游戏。作为编程小白,研究汉诺塔问题并在C语言中以递归算法实现还是挺有难度的,以下是本人对该问题的思考所得。所写内容均为本人拙见,如若有误,还望大神前辈们指点一二。
汉诺塔问题
游戏规则:有三根柱子(编号A、B、C),在A柱自下而上、由大到小摆放着数个圆盘。需要用最少的步骤将A杆上的圆盘全部移到C杆上,并仍保持原有顺序。
操作要求:每次只能移动一个圆盘,并且在移动过程中始终保持大盘在下,小盘在上。
首先,我罗列出了当A柱上有1、2、3、4个圆盘这四种情况的实现过程。
由此不难发现,当n=1时,只需移动一次即可。当n>1时,最中间的步骤永远是将第n个圆盘从A移向C的过程,在此之前是将n-1个