题目介绍
题目描述
用递归的方法输出Hanoi(汉诺)塔问题的解决步骤。汉诺塔问题描述如下:
古代有一个梵塔,塔内有3个座A、B、C。初始时A座上有n个盘子,盘子大小不等,大的在下,小的在上。有一个老和尚想把这n个盘子从A座移动到C座,但是每次只允许移动一个盘子,而且在移动过程中在3个座上需要始终保持大盘在下,小盘在上,在移动过程中可以使用B座。
要求使用递归的方法模拟并输出移动的步骤。
输入
一个正整数n,保证n不超过5。
输出
解决n个盘子的汉诺塔问题的步骤。
每一步一行,在这一行中输出将盘子从一个座移动至另一个的过程。例如移动A座顶部的盘子至C座,则输出A->C。
请注意行尾输出换行。
样例输入
3
样例输出
A->C
A->B
C->B
A->C
B->A
B->C
A->C
Java代码:
import java.util.*;
public class Main {
static int n;
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
n = cin.nextInt();
hanoi(n, \'A\', \'B\', \'C\');
}
/**
* 从a移动到c,借助b。需要移动n个盘子
* @param n
* @param a
* @param b
* @param c
*/
private static void hanoi(int n, char a, char b, char c) {
if(n == 1){//递归重点,进行打印
System.out.println(a+\"->\"+c);
return;
}
hanoi(n-1,a,c,b);//递归移动
hanoi(1,a,b,c);
hanoi(n-1,b,a,c);
}
}
继续阅读与本文标签相同的文章
上一篇 :
霍尼韦尔发布首份流程工业智能工厂白皮书
下一篇 :
linux安装mysql详细步骤
-
客服服务除了电话和工单还有哪些服务?阿里云服务方式整理
2026-05-18栏目: 教程
-
个人音视频常用工具介绍
2026-05-18栏目: 教程
-
用自定义监控实现 GPU 异常状况的检查与报警
2026-05-18栏目: 教程
-
与你同行,才能无障碍
2026-05-18栏目: 教程
-
分布式Id - redis方式
2026-05-18栏目: 教程
