全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

java 实现汉诺塔详解及实现代码

java 实现汉诺塔详解及实现代码

汉诺塔问题:有三根柱子A,B,C,其中A上面有n个圆盘,从上至下圆盘逐渐增大,每次只能移动一个圆盘,并且规定大的圆盘不能叠放在小的圆盘上面,现在想要把A上面的n个圆盘全部都移动到C上面,输出移动的总步数以及移动的过程

分析:

//先求出移动的总步数
1,假设g(n)表示n个圆盘时的移动总的步数,当n=1时,g(1)=1;

2.现在可以把g(n)进行细分为三步:
  1>先将n-1个圆盘从A通过C移动到B上面,相当于将n-1个圆盘从A移动到C,因此需要g(n-1)步;
  2>然后将剩下的最大的圆盘从A移动到C,需要1步;
  3>最后再将n-1个圆盘从B通过A移动到C上面,相当于将n-1个圆盘从A移动到C,因此也需要g(n-1)步;
因此可以得出递归关系式:g(n) = 2*g(n-1)+1;

//现在我们在来求出移动的过程
1.假设hm(m,a,b,c)表示将m个圆盘从a通过b移动到c的过程,假设mv(a,c)输出一次a到c的过程,即print a-->c

2.初始化hm,当m=1时,hm(1,a,b,c)=mv(a,c);
2.可以把hm(m,a,b,c)进行细分为三步:
  1>先将n-1个圆盘从A通过C移动到B,此时b和c进行互换,也就是 hm(m-1,a,c,b);
  2>然后将剩下的最大的圆盘从A移动到C,也就是hm(1,a,b,c);
  3>最后将n-1个圆盘从B通过A移动到C,此时b和a进行交换,也就是 hm(m-1,b,a,c);
最终得到过程的递归关系式:hm(m,a,b,c) = hm(m-1,a,c,b)+1+hm(m-1,b,a,c);

实现代码:

public class test{
  public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    int n = in.nextInt();
    test t = new test();
    //获取总的步数
    System.out.println("需要移动的总步数为:" +t.getSum(n));
    //获取移动的过程
    t.hm(n,'a','b','c');
  }
  //获取总步数
  public int getSum(int n){
    if(n == 1) 
      return 1;
    return 2 * getSum(n-1) +1 ;
  }

  //获取移动的过程
  public void hm(int m,char a,char b,char c){
    if(m == 1)
      move(a,c);
    hm(m-1,a,c,b);
    move(a,c);
    hm(m-1,b,a,c);
  }

  //输出一次移动的过程
  public void move(char a,char c){
    System.out.print(a + "-->" + c + "  ");
  }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# java  # 汉诺塔  # 实现汉诺塔的实例  # java求解汉诺塔问题示例  # Java使用递归法解决汉诺塔问题的代码示例  # java 汉诺塔详解及实现代码  # 手把手带你用java搞定汉诺塔  # Java用递归方法解决汉诺塔问题详解  # Java 细致图解带你分析汉诺塔  # JAVA数据结构之汉诺塔代码实例  # Java的函数方法详解(含汉诺塔问题)  # 求出  # 递归  # 先将  # 三步  # 放在  # 汉诺  # 希望能  # 后将  # 谢谢大家  # 再将  # 数为  # 上至  # 三根  # gt  # 总步数  # strong  # pre  # xml  # brush 


相关文章: 如何快速启动建站代理加盟业务?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  SQL查询语句优化的实用方法总结  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  建站OpenVZ教程与优化策略:配置指南与性能提升  宝塔建站无法访问?如何排查配置与端口问题?  如何快速选择适合个人网站的云服务器配置?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  如何基于云服务器快速搭建网站及云盘系统?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  表情包在线制作网站免费,表情包怎么弄?  南平网站制作公司,2025年南平市事业单位报名时间?  装修招标网站设计制作流程,装修招标流程?  如何在IIS中新建站点并配置端口与IP地址?  定制建站如何定义?其核心优势是什么?  如何在阿里云服务器自主搭建网站?  如何挑选优质建站一级代理提升网站排名?  建站上市公司网站建设方案与SEO优化服务定制指南  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  如何配置IIS站点权限与局域网访问?  建站主机与服务器功能差异如何区分?  简单实现Android文件上传  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  高端建站三要素:定制模板、企业官网与响应式设计优化  如何通过虚拟主机快速搭建个人网站?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  如何在Windows 2008云服务器安全搭建网站?  制作门户网站的参考文献在哪,小说网站怎么建立?  建站之星如何实现五合一智能建站与营销推广?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  官网建站费用明细查询_企业建站套餐价格及收费标准指南  公司门户网站制作流程,华为官网怎么做?  音乐网站服务器如何优化API响应速度?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  香港服务器部署网站为何提示未备案?  公众号网站制作网页,微信公众号怎么制作?  广州美橙建站如何快速搭建多端合一网站?  如何通过PHP快速构建高效问答网站功能?  高防服务器租用如何选择配置与防御等级?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  如何在云主机快速搭建网站站点?  如何快速上传建站程序避免常见错误?  如何在企业微信快速生成手机电脑官网?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  盐城做公司网站,江苏电子版退休证办理流程? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。