`
endual
  • 浏览: 3567013 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java 汉诺塔递归实现

    博客分类:
  • java
 
阅读更多

 

汉诺塔的问题:这个问题在以前也敲过代码,但是算法和数据结构在平时的时候,就是用不到,
这就导致了,过一段时间,我忘记了,而且忘记的一干二净,绝不留下,这也很佩服自己啊。
有要面试笔试了,很痛苦啊,这种感觉,linux,算法,数据结构,数据库,java框架,android,
等等好多都没有系统的复习,真是奔命啊。。。

网上转了一份汉诺塔的代码:添加了一些代码,其中的原理无法猜透,将就着用吧,希望笔试面试的
时候用到:

package job;

public class Hannuota {

	public Hannuota() {
	}

	public static void main(String args[]) {
		int disks = 64;// 这是盘子的个数(可以更改)
		final int source = 1;// 这是所有盘子初始位置(都是在第一根柱子上),这个最好不要改
		final int desk = 3;// 这是所有盘子最终位置(都是在第三根柱子上),这个最好不要改
		final int spare = 2;// 这是用于临时存放盘子的位置(也就是第二根柱子),这个最好不要改
		yidong(disks, source, desk, spare);
	}
	/**
	 * 
	 * @param disks 盘子的个数
	 * @param source 放盘子原始的棒的名字:我们称呼为 1
	 * @param desk   放盘子最后的棒的名字:我们称呼为3
	 * @param spare  放盘子中间的棒的名字:我们称呼为2
	 */
	public static void yidong(int disks, int source, int desk, int spare) {// 这是递归方法
		// 如果只有一个盘子,那就直接从source(柱子一)移动到desk(柱子三)
		if (disks == 1) {
			System.out.println(source + "=>" + desk);

		} 
		else {
			yidong(disks - 1, source, spare, desk); // 除了最小面一个盘子,把这些盘先移动到中间的盘去
			System.out.println(source + "=>" + desk); //最下面盘子转移,打印信息
			yidong(disks - 1, spare, desk, source); //再把盘子从中间的棒的位置专业到最后一个棒去

		}

	}

}
 

 

分享到:
评论

相关推荐

    Java实现汉诺塔递归算法详解

    以下是一个简单的Java程序来实现汉诺塔问题的解决方案: ```java public class Hanoi { public static void moveTower(int n, char from, char inter, char to) { if (n == 1) { // 基本情况:只剩一个盘子时,...

    汉诺塔Java实现

    汉诺塔问题的Java实现涉及到了递归算法和面向对象编程的概念。 首先,我们需要定义一个`HanoiTower`类来表示汉诺塔的结构。这个类可以包含三个属性,分别代表三根柱子,以及一个方法用于执行移动操作。移动操作又...

    java实现界面-汉诺塔

    // 递归实现汉诺塔算法 } } ``` 3. **View Classes**:这些类负责创建和管理界面组件,如JFrame、JPanel、JButton等。我们可能需要一个`HanoiTowerPanel`类来展示汉诺塔的三根柱子和圆盘。 ```java public class...

    JAVA 汉诺塔自动演示

    JAVA 汉诺塔自动演示是指使用JAVA编程语言实现汉诺塔问题的自动化演示程序。 在JAVA中实现汉诺塔自动演示,主要涉及以下几个知识点: 1. **递归**:汉诺塔问题的解决方案是基于递归算法的。递归函数通常包含两个...

    java汉诺塔小游戏

    总的来说,"java汉诺塔小游戏"项目涵盖了面向对象编程、递归算法、GUI设计等多个Java编程的重要概念。初学者可以通过学习这个项目,不仅能够掌握Java的基本语法,还能深入理解递归的思想,以及如何将算法与用户界面...

    java汉诺塔动画实现

    汉诺塔游戏是一种经典的递归问题,...总之,这个Java汉诺塔动画项目提供了一个很好的实践平台,可以帮助我们巩固递归、对象导向编程和GUI设计的概念。通过深入研究和改进这个项目,我们可以进一步提升自己的编程技能。

    java汉诺塔源码

    下面我们将详细讲解Java实现汉诺塔的源码及其中涉及的知识点。 首先,我们需要创建一个方法来处理汉诺塔问题。这个方法通常接受三个参数:起始柱(source)、中间柱(auxiliary)和目标柱(destination)。在Java中...

    java实现汉诺塔演示及手动操作汉诺塔

    在Java中实现汉诺塔,通常会用到递归算法,因为问题的本质适合这种解决方式。具体步骤如下: 1. **基础情况**:当汉诺塔只有一个圆盘时,直接将其从起始柱移动到目标柱。 2. **递归步骤**:对于n个圆盘,首先将n-1...

    用JAVA实现的汉诺塔

    在Java编程中,实现汉诺塔的过程可以帮助我们理解递归算法及其应用。下面我们将详细探讨汉诺塔问题以及如何使用Java来解决它。 首先,我们要明白汉诺塔的基本规则: 1. 每个盘子都有唯一的编号,从1到n,较大的盘子...

    JAVA汉诺塔

    JAVA汉诺塔项目是将这个游戏与Java编程语言结合,实现了一款具备多种功能的汉诺塔回合制游戏。在这款游戏中,玩家不仅可以体验传统的汉诺塔玩法,还能享受更多自定义选项,如调整盘子数量、大小、颜色,以及开启计时...

    使用java递归实现汉诺塔(Hanio)

    程序不仅包含了实现汉诺塔问题的Java代码,还具有命令行下的图形界面,使用户能够直观地看到圆盘的移动过程。 汉诺塔问题的Java解决方案通常包含一个`hanoi`方法,该方法接受三个参数:表示当前圆盘数量、起始柱子...

    java 汉诺塔+GUI

    在Java编程中,实现汉诺塔通常会用到递归算法和图形用户界面(GUI)来提供交互性。下面我们将详细讨论这些知识点。 **1. 汉诺塔算法** 汉诺塔问题的核心是递归思想。递归算法的基本步骤如下: - 假设有n个盘子,...

    java实现汉诺塔

    在Java中实现汉诺塔,我们需要理解递归的思想,并利用Java的面向对象特性来创建图形用户界面(GUI)以呈现游戏过程。 首先,让我们深入理解汉诺塔游戏规则:汉诺塔有三根柱子,分别标记为A、B、C。A柱上按大小顺序...

    java算法——汉诺塔经典的递归

    汉诺塔——经典的递归 *实现移动函数 *递归实现汉诺塔函数

    JAVA实现汉诺塔自动演示

    汉诺塔问题的解决策略通常使用递归算法,这个Java Applet程序正是基于此原理进行实现。 在Java中,我们可以创建一个`HanoiTower`类来表示汉诺塔,包含必要的方法来移动圆盘和执行递归操作。`HanoiTower`类可能会有...

    java 汉诺塔课程设计

    在这个Java课程设计中,我们将探讨如何利用Java语言来实现汉诺塔问题的解决方案。 汉诺塔问题的基本描述是:有三根柱子A、B、C,A柱上自下而上按大小顺序叠着n个盘子,目标是将所有盘子借助B和C柱,全部移到C柱上,...

    汉诺塔演示程序 java程序源代码

    综上所述,这个汉诺塔演示程序是一个典型的基于AWT库的Java GUI应用实例,它不仅展示了如何使用AWT的各种组件创建用户界面,还涉及到了递归算法的应用。对于学习Java GUI编程以及递归算法的人来说,都是一个很好的...

    JAVA汉诺塔的问题

    在JAVA中解决汉诺塔问题,通常使用递归函数来实现。下面我们将详细讲解如何用JAVA编程解决汉诺塔问题。 首先,我们需要创建一个方法来处理汉诺塔问题。这个方法通常命名为`moveTower`,接受三个参数:起始柱、辅助...

    JAVA图形界面程序——汉诺塔演示程序代码

    这个Java程序不仅实现了汉诺塔问题的解决,还通过Swing构建了一个直观的图形界面来展示解决过程。通过上述分析,我们可以看出该程序涵盖了从问题定义到具体实现的各个方面,非常适合用来教学或学习递归算法及Java ...

    Java 汉诺塔代码

    以下是一个简单的Java代码实现汉诺塔问题: ```java public class HanoiTower { public static void moveTower(int n, char fromRod, char interRod, char toRod) { if (n >= 1) { moveTower(n - 1, fromRod, ...

Global site tag (gtag.js) - Google Analytics