算法描述: 1,有三根柱子,A B C,A上有若干个碟子 从大到小排列 从下往上 2,每次移动一块碟子,小的只能叠在大的上面 3,把所有的碟子都从A柱子全部移动到C柱子上
public static void Tower_of_Hanoi(int topN, char from, char inter, char to) { /**递归的典型,汉诺塔算法 * 1,有三根柱子,A B C,A上有若干个碟子 从大到小排列 从下往上 * 2,每次移动一块碟子,小的只能叠在大的上面 * 3,把所有的碟子都从A柱子全部移动到C柱子上 * */ if (topN == 1){ System.out.println("Disk 1 from " + from + " to " + to); }else { Tower_of_Hanoi(topN - 1, from, to, inter); System.out.println("Disk " + topN + " from " + from + " to " + to); Tower_of_Hanoi(topN - 1, inter, from, to); } }算法描述:
1,l=1 时 f(1)=1 2,f(l)=l*f(l-1)
public static long factorial(int l) { long f=1; if (l==1) { f=1; }else { f= factorial(l-1)*l; } return f; }调用以上两个方法
public static void main(String[] args) { Tower_of_Hanoi(6, 'A', 'B', 'C'); System.out.println("6的阶乘是:"+factorial(6)); }输出结果:
Disk 1 from A to B Disk 2 from A to C Disk 1 from B to C Disk 3 from A to B Disk 1 from C to A Disk 2 from C to B Disk 1 from A to B Disk 4 from A to C Disk 1 from B to C Disk 2 from B to A Disk 1 from C to A Disk 3 from B to C Disk 1 from A to B Disk 2 from A to C Disk 1 from B to C Disk 5 from A to B Disk 1 from C to A Disk 2 from C to B Disk 1 from A to B Disk 3 from C to A Disk 1 from B to C Disk 2 from B to A Disk 1 from C to A Disk 4 from C to B Disk 1 from A to B Disk 2 from A to C Disk 1 from B to C Disk 3 from A to B Disk 1 from C to A Disk 2 from C to B Disk 1 from A to B Disk 6 from A to C Disk 1 from B to C Disk 2 from B to A Disk 1 from C to A Disk 3 from B to C Disk 1 from A to B Disk 2 from A to C Disk 1 from B to C Disk 4 from B to A Disk 1 from C to A Disk 2 from C to B Disk 1 from A to B Disk 3 from C to A Disk 1 from B to C Disk 2 from B to A Disk 1 from C to A Disk 5 from B to C Disk 1 from A to B Disk 2 from A to C Disk 1 from B to C Disk 3 from A to B Disk 1 from C to A Disk 2 from C to B Disk 1 from A to B Disk 4 from A to C Disk 1 from B to C Disk 2 from B to A Disk 1 from C to A Disk 3 from B to C Disk 1 from A to B Disk 2 from A to C Disk 1 from B to C 6的阶乘是:720