1.代码:
package datastructure.tree;
public class Hanoi {
/**
*******************
* Move a number of plates.
*
* @param paraSource The source pole.
* @param paraIntermedium The intermediary pole.
* @param paraDestination The destination pole.
* @param paraNumber The number of plates.
*******************
*/
public static void hanoi(char paraSource, char paraIntermediary, char paraDestination, int paraNumber) {
if (paraNumber == 1) {
System.out.println(paraSource + "->" + paraDestination + " ");
return;
} // Of if
hanoi(paraSource, paraDestination, paraIntermediary, paraNumber - 1);
System.out.println(paraSource + "->" + paraDestination + " ");
hanoi(paraIntermediary, paraSource, paraDestination, paraNumber - 1);
}// Of hanoi
/**
*******************
* The entrance of the program.
*
* @param args Not used now.
*******************
*/
public static void main(String args[]) {
hanoi('a', 'b', 'c', 3);
}// Of main
}// Of class Hanoi
2.运行结果:
3.总结:
n = 1时只需将编号为1的圆盘从A座移至C座
n > 1时,我们分三个阶段:
1:将A塔座上的n-1个圆盘按照规定移至到B塔座
2:将编号为n的圆盘由A座移至C座
3:利用A塔座,将B塔座上的n-1个圆盘按规定移至到C塔座