1. 程式人生 > 其它 >【遞迴】漢諾塔

【遞迴】漢諾塔

技術標籤:java & 演算法遞迴演算法

遞迴的功能

  • 用遞迴來代替多重迴圈
  • 本身就是遞迴定義的問題
  • 能分解成子問題的問題

思路:

漢諾塔經典問題。思路就是將n-1個盤子藉助C從A移動到B,再將第n個盤子從A移動到C,再將B上的n-1個盤子藉助A移動到C上。

題解:

public class Main {

    public static void Hanoi(int n,char src,char mid,char dest){
        //將src上的n個盤子,以mid為中轉,移動到dest上
        if(n==1){
            System.out.
println(src+"->"+dest); return; } Hanoi(n-1,src,dest,mid);//先將n-1個移動到mid System.out.println(src+"->"+dest); Hanoi(n-1,mid,src,dest); return; } public static void main(String[] args){ Hanoi(3,'a','b','c'); }
}