汉诺塔问题

汉诺塔问题,使用的是递归,将大问题分解成小问题的编程思想。

 1 package day8_01_Founcation;
 2 /*
 3  * 汉诺塔问题
 4  */
 5 public class HanoiTowerProblem {
 6     public static void main(String[] args){
 7         hannuoiTower(4,'A','B','C');
 8     }
 9     /*
10      * 利用递归解决汉诺塔问题
11      * 大问题:将n个盘子从A柱子移到B柱子其中借助C柱子
12      * 小问题:
13      * 将(n-1)个盘子A ---> C
14      * 将大盘子  A ---> B
15      * 将 (n-1)个盘子 C ---> B
16      * 该函数中n表示有几个盘子 ,char from, to, temp; 表示三根柱子 
17      */
18     static void hannuoiTower(int n,char from,char to,char temp){
19         if(n==0)return;
20         //将(n-1)个盘子A ---> C
21         hannuoiTower(n-1,from,to,temp);
22         //将大盘子  A ---> B
23         System.out.println(from+"----->"+temp);
24         // 将 (n-1)个盘子 C ---> B
25         hannuoiTower(n-1,temp,to,from);
26         
27     }
28 }

输出结果

A----->C
A----->C
C----->A
A----->C
C----->A
C----->A
A----->C
A----->C
C----->A
C----->A
A----->C
C----->A
A----->C
A----->C
C----->A
以粮为纲全面发展
原文地址:https://www.cnblogs.com/alexliuf/p/13153187.html