【遞迴】漢諾塔
阿新 • • 發佈:2021-01-06
技術標籤: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');
}
}