汉诺塔问题

python—汉诺塔问题及受限的汉诺塔问题 2025-2-13。 阅读详情

/**
*汉诺塔问题(java实现)

*作为参数传递给函数的栓名为“start”,“middle”,“end”。
*一开始提示用户并输入盘子数n然后调用递归函数hanoi一求出将n
*个盘子以 “start”栓移到“end”的移动步骤。整个算法学
*要2*2*2….2*2(n个)—1次移动。对于10个盘子的情况,次游戏需
*1023次移动。在测试的例子中,n=3,移动步骤是2*2*2-1=7.
*/
import java.util.Scanner;
public class Hanoi {
    static int times=0;
    static void hanoi(int n, String startpeg, String middlepeg, String endpeg) {
  times++;
        if (n == 1)//只有一个环时
            System.out.println("["+times+"] move " + startpeg + " to " + endpeg);
        else {//大于1个环时
   //将上面n-1个环从"start"移动到"middle"
            hanoi(n - 1, startpeg, endpeg, middlepeg);
   //将最下面的环从"start"移动到"end"
            System.out.println("["+times+"] move " + startpeg + " to " + endpeg);
   //将上面n-1个环从"middle"移动到"end"
            hanoi(n - 1, middlepeg, startpeg, endpeg);
        }
    }

    public static void main(String[] args) {
        String startpeg = "start";
        String middlepeg = "middle";
        String endpeg = "end";
       
        Scanner scanner=new Scanner(System.in);
  System.out.println("请输入一个正整数(环的数目)");
  int n=scanner.nextInt();
  while(n!=0){
    System.out.println("The solution for n = " + n);
    //用于计算执行时间
    long s=System.currentTimeMillis();
          hanoi(n, startpeg, middlepeg, endpeg);
    long e=System.currentTimeMillis();
          System.out.println("执行时间 :" + (e-s)+"毫秒");
    times=0;
          System.out.println("提示:输入0退出计算,继续的话请输入一个正整数(环的数目)");
    n=scanner.nextInt();
  }
    }
}
 

Java实现汉诺塔问题的递归解决方案 本文还有配套的精品资源,点击获取 简介:汉诺塔问题是一个经典的递归算法问题,要求将圆盘从一根柱子按照规则移动到另一根柱子。Java编程语言可以用来实现这一问题的解决方案,利用递归函数将问题分解为更小的子问题,并通过基本情况结束递归。本文提供了一个Java代码示例,演示了如何通过递归方法实现汉诺塔问题的求解过程。代码中详细展示了移动圆盘的步骤,并可以通过改变圆盘数量来模拟不同... 阅读详情

相关推荐

简单的JAVA汉诺塔游戏源代码

这是一个简单的java汉诺塔游戏源代码,它适合与java初学者参考使用,

汉诺塔问题—java详解(附源码)

只需要挪动一次就好了。仔细思考,不难想到:会经过三个步骤 。1.A->B2.A->C3.B->C 1.A->C,A->B: 2.C->B,A->C4.B->A,B->C,A->C 最终完成了当n等于3的情况,一共挪动了7步。具体可以参考当n等于3时进行深入理解。 话不多说,直接上代码: 好了,今天就分享这么多,谢谢大家。

2301_76249062的博客 2909

java汉诺塔小游戏程序源码

这是汉诺塔小游戏java版源码,希望对大家有所帮助

Java 递归实现汉诺塔小游戏

Java 递归实现汉诺塔小游戏

qq_45256357的博客 507

汉诺塔游戏java源代码

汉诺塔游戏java源代码,只是一个简单的游戏,没有演示功能,有利于java学习者对界面和鼠标事件的学习

java实现汉诺塔小游戏

用java实现的汉诺塔游戏,含源代码和可执行exe文件,供初学者参考学习

汉诺塔(java实现,个人理解描述)

起始柱,过渡柱,终点柱,并没有硬性的指向一根柱子,这3个名词都只是柱子的一个临时名称,在盘子移动的过程中这3根柱子的名称是在不断变换的。也就是说,左边的柱子在游戏开始的时候被称为起始柱,再进行n次移动之后,你一定会将它看作过渡柱,再移动n次,它一定又会被你看作终点柱,这些命名都是临时性的,循环往复。所以我这篇博客,讲述的是我在学习的过程中的一点个人理解,有许多自己总结的笔记,多多少少有点在迷茫中引路的效果,希望对不懂得人有帮助。* 难点就是在游戏的过程中,要不断的去重新定义,起点柱,过渡柱,终点柱。

m0_63204398的博客 1658

java汉诺塔游戏小程序

一部分代码如下: JTextField field; //用于获取盘数 JLabel label = new JLabel("请输入盘数"); JButton button; public static String output;//用于保存移动的步骤 JTextArea outputArea = new JTextArea(17,20);//用于输出

汉诺塔问题及Java代码实现(牛客笔记)

汉诺塔问题 描述 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如图1)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。(图片来自百度百科) 递归思想 将汉诺塔问题的解决方案可以分为3步: 把n-1个盘子从Left借助Mid,搬到Righ

weixin_44473131的博客 6266

【COMSOL超材料和超表面仿真设计】

超材料和超表面的设计通常需要自定义材料属性。在COMSOL中,可以通过定义介电常数和磁导率的张量来模拟超材料的特性。对于超表面,通常需要定义表面阻抗或等效电路模型。

weixin_51101456的博客 1661

CentOS7下快速修复libssl.so.1.1缺失问题(附腾讯云镜像加速下载)

本文详细介绍了在CentOS7系统中快速修复libssl.so.1.1缺失问题的工程化实践方案。通过编译安装OpenSSL 1.1.x版本、配置动态链接器及创建符号链接等步骤,有效解决共享对象文件缺失问题,并提供了腾讯云镜像加速下载的优化方案,帮助开发者高效部署现代应用。

weixin_33711647的博客 367

汉诺塔问题学习报告

汉诺塔问题学习报告 (如解析和参考有错误或可以精进之处,欢迎批评指正。) 法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵

eliyou的博客 6685

从叶片之舞到数据之眼:净空雷达如何重塑风电安全与效率的边界

净空雷达通过激光或毫米波技术实现风机叶片与塔筒间距离的毫米级实时监测,极大提升了风电场在极端天气下的安全性与运营效率。这项技术不仅预防扫塔事故,还通过数据可视化与智能分析赋能叶片健康管理和发电优化,成为风电数字化运维的核心基础设施。

xk7n92h3p5m的博客 1160

汉诺塔问题深度解析

汉诺塔问题(Tower of Hanoi)不仅是理解递归算法的绝佳案例,还蕴含着丰富的数学规律和逻辑思维。本文我将全面深入地介绍汉诺塔问题的起源、问题描述、递归求解原理、多语言实现、复杂度分析,以及其在实际场景中的拓展与应用

1537

如何让C++程序生成dump文件?生成dump文件的方式有哪些?如何使用Windbg分析dump文件?

本文详细介绍了如何让C++程序生成dump文件、生成dump文件的多种方式以及如何使用Windbg分析dump文件,并给出了对应的实战分析案例,有一定的实战参考价值。

dvlinker的技术专栏 5万+

【RTD】AD7793驱动程序

AD7793完整驱动程序,支持两线、三线、四线RTD。

只要思想不滑坡,想法总比问题多。 6173

汉诺塔问题详解

汉诺塔递归详解

m0_68989458的博客 3万+

STM32 使用IQmath实现SVPWM

文章目录SVPWMIQMATHIQmathLib测试部分程序附件 SVPWM SVPWM是空间矢量脉宽调制(Space Vector Pulse Width Modulation)的简称,通常由三相逆变器的六个功率开关管组成,经过特定的时序和换相所所产生的脉冲宽度调制波,最终输出的波形可能会十分接近理想的正弦波形。 具体如下图所示;左侧为复平面,即空间矢量,右侧为时域的正弦波形; 关于SVPWM原理的文章非常多,这里可以推荐一下网上一个非常不错的教程《SVPWM的原理及法则推导和控制算法详解第五修改版》,

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 2万+

Python解决汉诺塔问题

问题引入 汉诺塔问题源于印度一个古老传说。相传大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作? 相关问题-递归 在编程语言中,如果一种计算过程的其中每一步都会用到前一步或前几步的结...

Lemon的博客 5万+

总结目前开源的视频生成/视频编辑大模型

随着Sora的爆火,视频生成和视频编辑受到了越来越多的关注。这篇博客总结一下目前开源的视频生成和视频编辑的大模型,并分析他们各自的优缺点,以及在自己进行科研任务或者工作中应该如何选用对应的开源模型,希望能给从事这一领域研究和使用的小伙伴们帮助。

沉迷单车的追风少年 3542

Qt c++ llama.cpp 运行 LLaMA-3-8B 中文对话机器人(多模态输入)

助手:

寒寒豆豆软件公司的博客 219

关于汉诺塔问题

关于汉诺塔问题

weixin_53212110的博客 3624

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: 游戏中记时的另一方法
下一篇: 通用程序设计(1)---通用包
ceun
博客等级 码龄21年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值