汉诺塔问题(java解析代码版)

此文章只解析代码部分问题,理解汉诺塔,但是不理解代码的可以看一下,希望能帮到各位,如果有什么地方错了,欢迎指正。

不过其实主要还是给自己看的,怕到时候忘记

汉诺游戏规则如下:

1、有三根相邻的柱子,标号为A,B,C。

2、A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘。

3、现在把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方。

  • 思路:我也不会,先看move()部分代码先,不懂的看解析,然后就会了
java 复制代码
public void move(int n,char a,char b,char c) {
        if (n == 1){
            System.out.println(a+"->"+c);
        }else {  //先将这个代码假设 n = 2 来分析这段代码
            //将a移b
            move(n-1,a,c,b);
            //将a移到c
            System.out.println(a+"->"+c);
            //将中间的b移到c
            move(n-1,b,a,c);
        }
    }

解析:建议自己画图分析 ,然后再看就会了

看完自己再分析一下就懂了。

然后如果我自己忘记了

那大于二的盘子怎么走?比如n =3,但是头两个盘子已经被移到c柱子了。

但是注意第一步传入的参数并不是abc而是acb ,所以,头两个盘子是被移动到B柱子了

相关推荐
小徐不徐说4 分钟前
C++ 模板与 STL 基础入门:从泛型编程到实战工具集
开发语言·数据结构·c++·qt·面试
艾莉丝努力练剑6 分钟前
【C/C++】类和对象(上):(一)类和结构体,命名规范——两大规范,新的作用域——类域
java·c语言·开发语言·c++·学习·算法
myNameGL19 分钟前
下载一个JeecgBoot-master项目 导入idea需要什么操作启动项目
java·ide·intellij-idea
froginwe1122 分钟前
WebPages PHP:深入解析PHP在网页开发中的应用
开发语言
Emotion亦楠38 分钟前
Java 学习笔记:常用类、String 与日期时间处理
java·笔记·学习
R-G-B1 小时前
【33】C# WinForm入门到精通 ——表格布局器TableLayoutPanel【属性、方法、事件、实例、源码】
开发语言·c#·c# winform·表格布局器·tablelayoutpane
郝学胜-神的一滴1 小时前
Spring Boot Actuator 保姆级教程
java·开发语言·spring boot·后端·程序人生
赵英英俊1 小时前
Python day31
开发语言·python
jiangxia_10242 小时前
面试系列:什么是JAVA并发编程中的JUC并发工具类
java·后端
程序员-Queen2 小时前
RDQS_c和RDQS_t的作用及区别
c语言·开发语言