`
shenyu
  • 浏览: 120502 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

递归-汉诺塔

阅读更多

汉诺塔问题。

这里顺便可以求出一共需要搬运的次数。

以下是汉诺塔问题的解法:

class Hanoi {
	public static void main(String[] args) {
		int times = hanoi(3,'a','b','c');
		System.out.println("一共搬运" + times + "次");
	}

	//from: 搬运的起点, to:搬运的目标地,middle: 临时中转地
	private static int hanoi(int level, char from, char to, char middle) {
		if(level == 1) {	//递归结束条件,只有一个塔
			System.out.println(level + ": " + from + " to " + to);
			return 1;
		}
		int times = hanoi(level - 1, from, middle, to); //将n-1层搬运的临时中转地
		System.out.println(level + ": " + from + " to " + to);	//将第n层搬运到目标地
		return times + 1 + hanoi(level - 1, middle, to, from);	//将n-1层从临时中转地搬运到目标地
	}
}
 
4
3
分享到:
评论

相关推荐

    递归-汉诺塔

    简单的递归实现汉诺塔程序,是经典的递归应用程序~

    非递归-汉诺塔

    简单的非递归汉诺塔实现,C++初学者交流用。使用的经典的两部算法。

    汉诺塔-汉诺塔的非递归实现源码和原理讲解

    汉诺塔-汉诺塔的非递归实现源码和原理讲解---从网上整理的

    递归-汉诺塔问题_汉诺塔问题_pure6ce_

    汉诺塔问题:该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个...

    函数递归调用-汉诺塔问题_c++实现汉诺塔问题_

    利用函数递归调用的方法,实现了汉诺塔问题

    labview小游戏-汉诺塔

    两种移动方法(鼠标、键盘),附带演示功能,有背景音乐 ...或者利用键盘上的上下左右光标键控制木块移动:先按“左”、“右”键移动光标到某柱子下,按“上”键,柱子顶上的木块弹起,再左右移动光标,按“下”键木块...

    c++递归实现汉诺塔问题

    c++递归实现汉诺塔问题。 算法分析与设计 例题的源码实现。跟书上的一样。

    汉诺塔的非递归实现,c++

    汉诺塔的非递归实现,c++实现的,很简单,只有50多行,从递归的汉诺塔改编而来,将原来递归时的参数状态保存在栈中,入栈代替递归,出栈代替递归返回。

    Python递归实现汉诺塔算法示例

    本文实例讲述了Python递归实现汉诺塔算法。分享给大家供大家参考,具体如下: 最近面试题,面试官让我5分钟实现汉诺塔算法(已然忘记汉诺塔是啥)。 痛定思痛,回来查了一下汉诺塔的题目和算法。题干与实现如下: A...

    汉诺塔-非递归-java程序代码+实验报告

    人工智能课的一个作业,实现了汉诺塔-非递归-java代码,并附有实验说明、报告

    C#汉诺塔非递归

    用非递归算法,用栈解决问题,C#语言,来解决汉诺塔移动问题

    matlab递归实现汉诺塔m函数文件(动画演示)

    matlab递归实现汉诺塔m函数文件 压缩包中含有两个文件hannuota.m和hanoi.m 其中,hannuota.m无动画演示,调用格式为: >>hannuota(5,'A','B','C') hanoi.m有动态演示汉诺塔功能,是在hannuota.m的基础上实现,调用...

    递归解决汉诺塔问题[java/Eclipse]

    描述:递归解决汉诺塔问题 使用技术:java swing 工具:Eclipse 主程序:hanno.app.AppMain

    汇编语言-汉诺塔

    hanoi,汉诺塔问题,汇编语言经典解法,利用递归调用,经典

    C语言 - 汉诺塔(递归)

    使用C语言、递归函数实现的汉诺塔, 对递归不清楚的可以参考。

    递归实现汉诺塔程序详解

    汉诺塔程序,能以图形的方式显示出汉诺塔,并能显示出盘子在汉诺塔之间的的移动过程

    C语言课程设计-汉诺塔的演示

    汉诺塔的演示过程,运用递归调用,C语言课程设计

    递归实现汉诺塔 谭浩强

    在VC6中,用递归方法实现汉诺塔算法,列出移动方法

    数学经典算法-汉诺塔.exe

    汉诺塔是一种古老的游戏,是指在一柱[设为'甲'柱]上从下向上依次放着从大到小的一叠盘子,要把该柱['甲'柱]上的盘子全部搬到指定的柱上[设为'乙'柱],在搬运过程中,可以利用另外一根柱子[设为'丙'柱]来协助搬移,...

    递归实现汉诺塔

    递归实现汉诺塔问题//递归实现模拟汉诺塔 #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define ORDER 3 //汉诺塔阶数 typedef int Status;//函数执行状态 typedef struct{ int count;//当前...

Global site tag (gtag.js) - Google Analytics