栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java递归实现汉诺塔

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java递归实现汉诺塔

public class HanNuoTa {
    public static void main(String[] args) {
        hanoi(3, 'a', 'b', 'c');
    }

    //num表示多少个盘子,begin起始柱,middle中转柱,end终点柱
    public static void hanoi(int num, char begin, char middle, char end) {
        //num等于1,当前柱子上剩最后一个盘子,直接移动到终点柱子
        if (num == 1) {
            System.out.println(begin + "-->" + end);
        } else {
            //num-1代表减去最下面一个盘子后上面的盘子,看作一个整体,移到中转柱子。
            //全部移到中转柱子后才可以吧最下面的移到终点柱子
            //此时begin装的是a,end装的是c,middle装的是b
            hanoi(num - 1, begin, end, middle);

            // a c b 传到 hanoi(begin middle end)
            // 其值为             a     c      b
            System.out.println(begin + "-->" + end);//因此输出结果为 a --> b

            //此时起始柱子最底盘以上的盘子全部转到中转柱,起始柱里的最底盘又转到终点柱子
            // 此时的起始柱子没有盘子,终点柱子有一个转成功的盘子
            //中转柱子此时变成了起始柱子,需将原本的起始柱子当做中转柱子,终点柱子不变
            hanoi(num - 1, middle, begin, end);
        }
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/936673.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号