`

汉诺塔

 
阅读更多

关于汉诺塔大家应该很熟悉吧。
    河內之塔(Towers of Hanoi)是法國人M.Claus(Lucas)於1883年從泰國帶至法國的,河內為越戰時北越的首都,即現在的胡志明市;1883年法國數學家 Edouard Lucas曾提及這個故事,據說創世紀時Benares有一座波羅教塔,是由三支鑽石棒(Pag)所支撐,開始時神在第一根棒上放置64個由上至下依由小至大排列的金盤(Disc),並命令僧侶將所有的金盤從第一根石棒移至第三根石棒,且搬運過程中遵守大盤子在小盤子之下的原則,若每日僅搬一個盤子,則當盤子全數搬運完畢之時,此塔將毀損,而也就是世界末日來臨之時。

 

代码如下。

import java.util.Scanner;

/*
 * 
	思路如下:
    	首先考虑极限当只有一个盘的时候 只要 盘直接从 a -> b即可
    	那么当有2个盘的时候就只要先把1号盘从a -> c 然后 把2号盘 a->b 再 把 2好盘从 c - > b
       	那么当有n个盘的时候你只要先把 n-1个 盘 借助  b  移动到 c 然后将 n号盘从 a -> b
 */
public class HanNouTa {
	public static void main(String[] args) {
		System.out.println("请输入盘数:");
		Scanner  scan=new Scanner(System.in);
		int n=scan.nextInt();
		hnt(n,'a','b','c');
	}
	public static void move(int n,char a,char b)
	{
		System.out.println(n+"盘从"+a+"移动到"+b+"盘");
	}
	/**
	 * 
	 * @param n 盘数
	 * @param a 要移动的盘
	 * @param b 目标盘,也就是要移动到这里
	 * @param c 需要借助的盘
	 */
	public static void hnt(int n,char a,char b,char c)
	{
		if(n==0) return;
		hnt(n-1,a,c,b);
		move(n,a,b);
		hnt(n-1,c,b,a);
	}
}

 

分享到:
评论

相关推荐

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

    汉诺塔是一个经典的递归问题,它源自一个古老的印度传说。在这个问题中,有三个柱子和一堆不同大小的圆盘,目标是将所有圆盘从一个柱子移动到另一个柱子,遵循以下规则: 1. 一次只能移动一个圆盘。 2. 不允许将大...

    flash小游戏汉诺塔-Flash文档类资源

    汉诺塔(Hanoi Tower)是一款经典的逻辑游戏,源自19世纪由法国数学家艾德蒙·洛卡特(Edouard Lucas)提出的数学问题。它通常由三根圆柱和一堆不同大小的圆盘组成,玩家的目标是将所有圆盘从一根柱子移动到另一根...

    flash小游戏汉诺塔

    汉诺塔(Hanoi Tower)是一款经典的逻辑益智游戏,起源于19世纪末的法国,由数学家爱德华·卢卡斯提出。在这个游戏中,有三根柱子和一堆大小不一的圆盘,起初都堆在第一根柱子上,按照从大到小的顺序自下而上排列。...

    简单的汉诺塔html网页游戏

    汉诺塔游戏是一种基于递归算法的经典逻辑游戏,源自印度古老传说,由法国数学家爱德华·卢卡斯在19世纪末正式提出。在这个简单的汉诺塔HTML网页游戏中,玩家将体验到如何通过一系列合法移动将全部圆盘从一根柱子...

    C经典算法之双色汉诺塔

    ### C经典算法之双色汉诺塔 #### 双色汉诺塔算法解析 双色汉诺塔(Two-color Hanoi Tower)是基于传统汉诺塔游戏的一种变体。传统汉诺塔游戏由三个柱子及不同大小的圆盘组成,玩家的目标是将所有圆盘从初始柱子...

    Scratch高级创意编程 Scratch汉诺塔游戏实现 少儿图形化编程案例源程序

    Scratch汉诺塔创意编程源程序汉若塔:由4-8个不同积木块和3根柱子组成游戏规则:1、一次只能移一个积木(柱子最上面)2、积木只能在三个柱子上存放3、任何时刻不允许大的压小的案例完美的诠释了什么是汉诺塔游戏,...

    汉诺塔演示程序(包含二叉树的演示动画)

    汉诺塔演示程序结合了二叉树的演示动画,为学习和理解这两种计算机科学基础知识提供了一个生动直观的方式。首先,我们来深入探讨一下汉诺塔问题及其解决方案。 汉诺塔是一个经典的递归问题,由三个柱子和一堆大小...

    java实现界面-汉诺塔

    汉诺塔是一个经典的递归问题,它源自印度的古老传说,涉及将一组圆盘从一根柱子移动到另一根柱子,遵循以下规则: 1. 每次只能移动一个圆盘。 2. 任何时候大盘子都不能位于小盘子之上。 在Java中实现汉诺塔的界面...

    C#汉诺塔非递归

    汉诺塔是一个经典的计算机科学问题,它源自印度的传说,要求将一堆盘子从一根柱子移动到另一根柱子,遵循以下规则:每次只能移动一个盘子,并且任何时候大盘子都不能位于小盘子之上。在C#中,解决汉诺塔问题通常采用...

    汉诺塔游戏 含源代码及图形化界面

    汉诺塔游戏是一种经典的逻辑谜题,源自19世纪的法国,由数学家艾德蒙·洛卡特提出。这个游戏的目标是将一个柱子上的所有盘子,通过另外两个柱子作为辅助,按照大小顺序从底部移动到顶部。在移动过程中,任何时候都不...

    多柱汉诺塔问题研究论文

    ### 多柱汉诺塔问题研究 #### 引言与背景 汉诺塔问题作为一种经典的数学游戏,由法国数学家爱德华·卢卡斯在1883年提出。传统汉诺塔问题包含三个柱子及多个不同大小的圆盘,玩家的目标是将所有圆盘按照一定规则从...

    实验八_VRML3-1移动汉诺塔

    汉诺塔(Hanoi Tower)是一个经典的数学游戏,通常用三根柱子和一堆不同大小的盘子来演示。在VRML(Virtual Reality Modeling Language,虚拟现实建模语言)中,我们可以利用其3D场景构建能力来模拟这个游戏。VRML是...

    flash 3.0汉诺塔:小游戏

    汉诺塔(Hanoi Tower)是一款经典的逻辑游戏,它源于印度的一个传说,旨在通过移动盘子来演示一个看似简单但实则复杂的问题解决过程。在Flash AS 3.0环境中,我们可以利用ActionScript这一强大的脚本语言来创建交互...

    汉诺塔 源代码 -汉诺塔小程序

    ---汉诺塔源代码--- ---汉诺塔源代码--- ---汉诺塔源代码--- ---汉诺塔源代码--- ---汉诺塔源代码---

    汉诺塔(C++)

    ### 汉诺塔(Hanoi Tower)问题详解与C++实现 #### 一、汉诺塔问题背景介绍 汉诺塔(Tower of Hanoi),又称河内塔,是一个源自印度古老的数学游戏。该问题由法国数学家爱德华·卢卡斯于1883年发明,并以其富有...

    汉诺塔问题的拓展 四柱汉诺塔

    算法分析设计中三柱汉诺塔算法的拓展,四柱汉诺塔的设计算法代码

    汉诺塔Java实现

    汉诺塔是一个经典的递归问题,它源自一个古老的印度传说。在这个问题中,有三根柱子和一堆大小不一的圆盘,圆盘在最下面的柱子上按照从大到小的顺序堆叠。目标是将所有圆盘从第一根柱子移动到第三根柱子,过程中每次...

    汉诺塔的js代码

    汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上安大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另...

    汉诺塔问题matlab代码

    汉诺塔问题是一种经典的递归算法问题,源自印度的一个古老传说。在数学和计算机科学领域,它是用来教学和理解递归思想的一个经典实例。在MATLAB中实现汉诺塔问题,我们可以利用其强大的编程功能来解决这个问题。 ...

Global site tag (gtag.js) - Google Analytics