十四 、汉诺塔问题之递归解决 java

原理图:

将五盘子从A移动到C可以分解成

将上面的4个盘子移动到B,再将A上的一个盘子移动到C。
接着使用递归将上面的三个盘子通过C移动到A,再移动一个盘子从B到C。
接着问题变成了将三个盘子从A移动到C,这是下一个递的过程。

源代码:

public class HanioTower {

/*
* TopN:上面的盘子数
* From:开始的底座
* Middle:中间的底座
* To:目标的底座
* */

public static void moveTower(int TopN, char From , char Middle ,char To) //移动底座
{
if(TopN == 1)
{
System.out.println("盘子1:" +From + " -> "+To); //一步到位
}
else
{
moveTower(TopN - 1, From, To, Middle);
System.out.println("盘子"+TopN+":"+From +" —> "+To); //移动那一个盘子
moveTower(TopN -1 , Middle, From, To);
}
}
}

原文地址:https://www.cnblogs.com/fyz666/p/8472094.html