java三个柱子汉诺塔问题
Posted DQ_CODING
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java三个柱子汉诺塔问题相关的知识,希望对你有一定的参考价值。
题目
移动盘子,每一次只能移动一个,小盘子在大盘子上。
打印1 from A to B过程
注意
1)盘子编号的变化和辅助柱子的变化
2)当盘子编号为1时,结束递归,此时移动结束
代码
package p2;
/**
* Illustration
*
* @author DengQing
* @version 1.0
* @datetime 2022/5/7 16:01
* @function 汉诺塔问题:把盘子从A移动到B【A B C】
* 移动盘子,每一次只能移动一个,小盘子在大盘子上。
* 打印1 from A to B过程
*/
public class problem8
public static void main(String[] args)
move(3, "A", "B", "C");
/**
* n:初始的n个盘子,n为最大编号
* from:原始柱子
* to:目标柱子
* help:辅助柱子
*/
public static void move(int n, String from, String to, String help)
//当移动1号盘子时,递归结束
if (n == 1)
System.out.println("盘子" + n + "从" + from + "移动到" + to);
return;
/*盘子1从A移动到B
盘子2从A移动到C
盘子1从B移动到C
盘子3从A移动到B
盘子1从C移动到A
盘子2从C移动到B
盘子1从A移动到B*/
//先把1~n-1个盘子移动到辅助空间上
move(n - 1, from, help, to);
//n号盘子可以到达目标柱子
System.out.println("盘子" + n + "从" + from + "移动到" + to);
//再把1~n-1个盘子从辅助空间移动到目标柱子上去
move(n - 1, help, to, from);
创作打卡挑战赛
赢取流量/现金/CSDN周边激励大奖
以上是关于java三个柱子汉诺塔问题的主要内容,如果未能解决你的问题,请参考以下文章