`
endual
  • 浏览: 3545091 次
  • 性别: 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源码

    在Java编程中实现汉诺塔问题,我们可以深入理解递归的思想以及如何在实际代码中应用它。本篇文章将详细解析汉诺塔问题的背景、算法原理以及如何用Java语言实现。 1. 汉诺塔问题介绍: 汉诺塔问题由三个柱子组成,...

    JAVA实现汉诺塔自动演示

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

    java 汉诺塔课程设计

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

    简单的JAVA汉诺塔游戏源代码

    这个简单的JAVA汉诺塔游戏源代码为我们提供了一个学习和理解递归算法的良好示例。 在Java编程中,汉诺塔问题的解决方案通常使用递归函数来实现。递归是函数自身调用自身的一种方法,通常用于解决具有相同结构但规模...

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

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

    JAVA汉诺塔的问题

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

Global site tag (gtag.js) - Google Analytics