漢諾塔問題是在編程時經(jīng)常提到的一個問題,因為它在遞歸的使用方法有很強的代表性。它講的是需要將N個盤子從A柱上通過B柱的輔助全部移動到C柱上,其間只有一個條件需要注意,那就是大盤子始終在小盤子下面。
如何用遞歸的思路來解決問題呢?方法很簡單,其實我們其它的什么都不需要考慮,只需要這樣想,假設(shè)現(xiàn)在有10只盤子,我只需要將上面的9只從A柱放到B柱上,而且是上小下大,這樣就可以將第10只盤子從A柱放到C柱上了,再將那9只盤子通過A柱移動到C就可以了,至于那9只盤子如何移動,我們可以這樣想,我們可以用和第10只盤子相同的方法,先將上面9只通過B柱移動到C柱,然后將第9只盤子從A移動到B,再將那8只通過A從C移動到B就可以了,依此類推,方法都是一樣的。因此可以有這樣的程序出現(xiàn)。

public void move(int n ,char one ,char two, char three)
{
if(n==1)
System.out.println("第"+n+"只盤子由"+one+"--"+three);

else
{
move(n-1, one , three , two);//將第n-1只盤子從one通過three移動到two;
System.out.println("第"+n+"只盤子由"+one+"--"+three);
move(n-1, two , one , three););//將第n-1只盤子從two通過one移動到three;

}
}
然后我們要做的就是通過一個主函數(shù)來調(diào)用這個方法就可以了。
public class HanN


{
public static void main(String [] args)


{
HanN hn = new HanN();
hn.move(3,'A','B','C');
}
}