小小的程序里面含有大大的思想
- 在数据结构中, 一般把 Hanoi 塔放到栈这一章. 但我觉得, 将其展开更像是二叉树, 也有点三叉的味道.
- 虽然代码很短, 但参数复杂. 必须用有意义的变量名, 才不容易出错. 话说现实生活中一般不会遇到这样复杂的参数.
package dataStructure.tree;
/**
* Hanio tower
*
* @author goudiyuan
*/
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
* The args not used now.
*/
public static void main(String[] args) {
hanoi('a', 'b', 'c', 3);
}// of main
}// of class Hanoi
运行结果
a->c
a->b
c->b
a->c
b->a
b->c
a->c