如何用Java递归来实现汉诺塔游戏
发表于:2024-09-23 作者:千家信息网编辑
千家信息网最后更新 2024年09月23日,今天就跟大家聊聊有关如何用Java递归来实现汉诺塔游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。我们很容易能想到,可以用递归来实现汉诺塔游
千家信息网最后更新 2024年09月23日如何用Java递归来实现汉诺塔游戏
今天就跟大家聊聊有关如何用Java递归来实现汉诺塔游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
我们很容易能想到,可以用递归来实现汉诺塔游戏。因为要将n(n>1)个盘子从"源"柱子移到"目标"柱子,我们要先把n-1个盘子从"源"柱子移到"辅助"柱子上,然后把最底下那一个盘子移到目标柱子上,最后把"辅助柱"上的n-1个盘子移动到目标柱子上。n==1时直接移到目标柱上,也是递归的出口。
有了以上思路的铺垫,就可以开始实现代码了。
public class HanoiDemo { public static int hanoiCalledCount = 0;//成员变量记录操作次数 //汉诺塔游戏是一种二路递归 public static void main(String[] args) { hanoi(3,"A","B","C"); System.out.println("执行"+hanoiCalledCount+"步"); } public static void hanoi(int n,String source,String target,String assist){ if(n<=0){ System.out.println("n要大于零"); } if(n==1){//递归的出口,n==1时直接移到目标柱上 System.out.printf("把一个盘子从%s柱子上移动到%s柱子上\n",source,target); hanoiCalledCount++;//计数器加一 }else{ //先把n-1个盘子从"源"柱子移到"辅助"柱子上 hanoi(n-1,source,assist,target); //把最底下那一个盘子移到目标柱子上 System.out.printf("把一个盘子从%s柱子上移动到%s柱子上\n",source,target); hanoiCalledCount++;//计数器加一 //把"辅助柱"上的n-1个盘子移动到目标柱子上 hanoi(n-1,assist,target,source); } }}
运行结果如下,大家可以尝试验证一下是否正确。
当n==2时,要操作3次
当n==3时,要操作7次
当n==4时,要操作15次
相信大家已经猜出规律了,操作次数==n^2-1
可见,随着盘子个数n的增加,操作次数以n^2增加,所以,自己玩汉诺塔游戏的是时候建议数字不要超过20。
看完上述内容,你们对如何用Java递归来实现汉诺塔游戏有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
柱子
盘子
目标
递归
汉诺
移动
辅助
内容
次数
计数器
加一
出口
个数
代码
变量
建议
思路
成员
数字
时候
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
陕西浪潮服务器虚拟化设计云空间
dell 小型服务器
软件开发乌龟图
服务器怎么安装xp
市商务局网络安全宣传
东莞金融软件开发哪家好
世界最大ai服务器供应商
oracle取中间的数据库
js 回传数据库
网络安全反诈app
c4网络技术挑战赛官网
农村集体使用权数据库
软件开发所需工种指什么
加强对师生进行网络安全教育
服务器卡怎么办
基于工控机的数控系统的软件开发
配置mariadb数据库
服务器默认的安全
网络安全测评项目绩效指标
王者荣耀账号已绑定的服务器
上海网络安全评高级职称
宝塔数据库安装不上
方舟电脑版是怎么转服务器的
2tb服务器硬盘价格
电子电路模拟软件开发
黑魂服务器还没修好
最大服务器集群
颠覆服务器
网络安全投资推荐
服务器服务器黑鲨云主机051