递归典型算法

来源:互联网 发布:徐金华seo 编辑:程序博客网 时间:2024/05/16 13:54

递归典型算法

汉诺塔算法

算法描述:
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

0 0
原创粉丝点击