首页 > 其他分享 >用递归函数实现汉诺塔游戏

用递归函数实现汉诺塔游戏

时间:2024-09-23 13:54:40浏览次数:10  
标签:同理 游戏 递归函数 放到 圆盘 num 汉诺塔 test 号盘

1.是什么

        汉诺塔(Hanoi Tower)是一个经典的递归问题,描述了将一个由三根柱子组成的塔上的n个大小不一的圆盘从一个柱子移动到另一个柱子上的过程。每次移动只能移动一个圆盘,并且大圆盘不能放在小圆盘上面。


思路分析:

        当圆盘总数是5时,要将最底层的圆盘(最大的圆盘)放到c塔,那么就要其余的圆盘(num-1)放到B塔

        同理要想将4号盘放到B塔,就要将上面其余的盘放到C盘,最底层的5号盘先忽视

        同理,要想将3号盘放到C塔就要将上面的盘放到B塔

        同理,要将2号盘放到B塔就要将1号盘放到C塔

演示:

到了这步骤已经堆好了以2为底的盘了,后面的步骤就是从A塔中拿出来的大盘为底盘再按顺序叠好

以3号为底的盘子按顺序(大到小)叠好,以此类推

这样,5号盘就可以放到C塔了,那么如果想将4号盘放到C塔,那么其余的盘子就要放到A塔

同理可得,要将3号盘放到A塔,那么上面的盘就要放到C塔

同理:

继续步骤:

每次从B塔中拿出来的大盘就要按照从大到小叠好

分析思路同理,这里就不叙说了

总结:这里细心的朋友就会发现了规律,奇数号盘为底盘时都是放在同一个塔(结合上面的图)这样,首先拿出的是1号盘(奇数盘)就可以判断应该放到哪个塔了

代码:

public class Test {
    public static void main(String[] args) {
        Test test = new Test();
        test.test(5, 'A', 'B', 'C');
    }
    public void test(int num, char a, char b, char c) {
        if (num == 1) {
            System.out.println(a + "---->" + c);
        } else {
            //理解为实参位置一一对应A,B,C
            test(num - 1, a, c, b);
            System.out.println(a + "---->" + c);
            test(num - 1, b, a, c);
        }
    }

}

解释:

 好啦,今天的干货就到这啦~    有什么建议或疑问的小伙伴欢迎到评论区留言!

标签:同理,游戏,递归函数,放到,圆盘,num,汉诺塔,test,号盘
From: https://blog.csdn.net/2401_83418369/article/details/142443776

相关文章

  • 活化数据中台:在游戏行业构建数据飞轮的最佳实践
    在当代的游戏行业,竞争日益激烈,数据不仅仅是衡量指标的源泉,更是驱动业务发展的核心资产。游戏公司面临的一个主要挑战是如何有效利用这些数据来改善玩家体验,提高玩家留存率,并实现商业目标。本文将详细探讨如何在游戏行业中建立一个高效的数据飞轮,通过实例和技术分析来说明数据如何成......
  • P1043 [NOIP2003 普及组] 数字游戏
    又是一个思维毒瘤好题,但dp题都是这样,菜就多练吧。拆环为链,前缀和加速计算,枚举断点数、起点、终点、断点。#include<bits/stdc++.h>usingnamespacestd;#definelllonglongconstintN=105;inta[N*2];intn,m;intsum[N*2];intmx[N][N][N];intmi[N][N][N];int......
  • 小爱·扫雷游戏
    c164-扫雷题目描述小爱正在编写一个扫雷游戏的出题模块。这个模块的输入是一张地图,标记了每个地雷的位置,地雷以*表示,空地以.表示。这个模块的输出是一个表格,统计了每个空地周围八个方格内的地雷数量。例如,给定一个初始地图:*.*...*..则应输出:*2*231*10请你帮助小爱......
  • [NOIP2013 提高组] 转圈游戏
    [NOIP2013提高组]转圈游戏\(n\)个小伙伴(编号从\(0\)到\(n-1\))围坐一圈玩游戏。按照顺时针方向给\(n\)个位置编号,从\(0\)到\(n-1\)。最初,第\(0\)号小伙伴在第\(0\)号位置,第\(1\)号小伙伴在第\(1\)号位置,……,依此类推。游戏规则如下:每一轮第\(0\)号位置上的小......
  • 学霸带你了解游戏角色成长装备系统基本运算
    探索角色成长与装备系统在现代电子游戏中,角色成长和装备系统是游戏设计的核心要素之一。理解这些系统的运作原理,不仅能帮助玩家更有效地提升游戏体验,还能帮助开发者优化游戏设计,确保游戏的平衡性与乐趣。本篇文章将详细探讨角色属性基础与成长、经验值计算公式、装备系统的影......
  • 学霸带你游戏化辅助学习个性化提升效果
    数字化学习资源的多样化随着科技的进步,教育领域也在经历一场数字化的变革。数字化学习资源的广泛应用不仅改变了传统学习的方式,还极大地丰富了学习工具和资源。现代学习者可以通过各种平台和应用获取知识、管理学习进度、进行互动式学习,这些工具和应用的结合使得学习变得更加......
  • 数据飞轮与数据中台:揭秘游戏行业的数据驱动转型
    在数码匮乏的年代,以经验为主导的商业决策曾占统治地位。然而,随着数据技术的演进和存储成本的下降,数据驱动的决策逐渐崭露头角,尤其在游戏行业。随之而来的是数据中台和数据飞轮概念的崛起。本文将深入探讨这两个概念,在游戏行业中的实践,并分析它们是否构成高阶关系或本质差异。数据......
  • [PTA]7-8 汉诺塔问题(Hanoi) 7-9 建国的数学难题 7-10 用递归法求解Fibonacci数列
    [PTA]7-8汉诺塔问题(Hanoi)7-9建国的数学难题7-10用递归法求解Fibonacci数列描述:一、汉诺塔问题有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:每次只能移动一个圆盘;大盘不能叠在小盘上面。提示:可将圆盘临时......
  • 数据飞轮效应:如何在游戏行业刺激数据中台的活力
    在当今数字化浪潮中,游戏行业始终处于技术创新的前沿。凭借数据飞轮的强大动力,游戏公司不仅能够理解玩家行为,还能有效挽回流失用户和优化产品体验。本文将逐步探讨在游戏行业中通过数据飞轮激活数据中台的实践方法与技术革新。理解数据飞轮的重要性数据飞轮是一个强大的概念,它涉及......
  • 帆软杯——中国云游戏行业研究分析
    帆软杯中国云游戏行业研究分析1.团队介绍2.作品背景3.制作流程3.1数据来源3.2整体架构与思路4.成果展示4.1中国云游戏行业发展现状4.2中国云游戏用户特征分析4.3中国云游戏产业链分析4.4中国云游戏面临新挑战4.5中国云游戏未来展望5.获奖证书中国云游戏......