zoukankan      html  css  js  c++  java
  • 汉诺塔问题

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

     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
    以粮为纲全面发展
  • 相关阅读:
    python(对象与实例属性)
    python(类和对象相关知识)
    python(面向对象设计)
    网络基础知识
    python(hashlib)
    子网掩码划分
    cmd命令
    Linux学习第一天:Linux常用快捷键
    python猜数字小游戏
    while语句
  • 原文地址:https://www.cnblogs.com/alexliuf/p/13153187.html
Copyright © 2011-2022 走看看