汉诺塔的规则是:一共三根柱子,一根柱子从上到下套着有小到大的若干个圆盘,要将所有圆盘按照这个排放顺序移动到第三根柱子上,并且每次只能移动一个圆盘.
可以将整个过程分为三个步骤来看:
第一步:将除最大圆盘外的n-1个圆盘移动辅助柱子上
第二步:将最大的圆盘移动到目标柱子
第三步:将n-1个圆盘从辅助柱子移动到目标柱子
其中第一步又可以拆成一模一样的三步,可以看成一个n-1层的塔要移动到目标柱子,只不过目标柱子换了一个:
第三步也可以拆分成一模一样的三步:
多拆几次就会发现规律:第一步和第三步无论如何拆成更小的汉诺塔,都只是目标柱和辅助柱发生调换,其他部分都是一模一样.所以我们将第一步和第三步进行递归运算就可以解决汉诺塔问题.
static void hanNuo(int n,String A,String B,String C){
if (n==1){