如何用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安全错误
数据库的锁怎样保障安全
山东互联网展示科技馆设计
如何导出阿里云mysql数据库
盗版rust服务器
网络安全第三次培训
湖南联通dns服务器云空间
软件开发中e-r图在哪一步
网络安全有哪些影响
摩尔庄园分服务器
苹果手机服务器怎么注册
服务器运行硬盘灯会闪红色
北方设施渔业标准数据库
第四实验小学网络安全宣传活动
允许使用移动数据库
明道网络技术有限公司
网络安全重大安全事件
做软件开发很费钱吗
潍坊网络软件开发公司
数据库创建视图周期
学网络安全还是软件工程
榆林网络安全协会副会长
山东互联网展示科技馆设计
奥丁一直服务器忙
杭州他山网络技术部
江苏苏州dns服务器虚拟主机
网络安全手抄报简单又漂亮文字多
一般纳税人软件开发行业税率
课程表如何设计数据库
云的学校软件开发
网上报考软件开发
pg数据库中uuid函数