汉诺塔算法代码实现

举报
tea_year 发表于 2022/05/20 23:17:58 2022/05/20
【摘要】 package com.aaa.recursion;public class Hanoi {    public static void main(String[] args) {        long start=System.currentTimeMillis();        move(20,"A","B","C");        long end=System.currentT...

package com.aaa.recursion;


public class Hanoi {


    public static void main(String[] args) {

        long start=System.currentTimeMillis();

        move(20,"A","B","C");

        long end=System.currentTimeMillis();

        

        System.out.println("汉诺塔时间:");

        System.out.println((end-start)/1000+"秒");

    }


    /**

     * 最开始:B中介->C中介-->A中介;不断递归调用;

     * @param dish 盘子个数

     * @param from 初始塔座

     * @param temp 中介塔座

     * @param to 目标塔座

     */

    private static void move(int dish, String from, String temp,String to) {

        if(dish==1)

            System.out.println("\t\t将盘子"+dish+"从塔座"+from+"移动到"+to);

        else{

            //超过1的时候,递归调用方法本身;A为初始目标,B为目标,C:中介

            move(dish-1,from,to,temp);

            System.out.println("将盘子"+dish+"从塔座"+from+"移动到"+to);

            //继续移动:A为中介,B初始塔座,C:目标;

            move(dish-1,temp,from,to);

        }

    }


}


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。