汉诺塔问题。
这里顺便可以求出一共需要搬运的次数。
以下是汉诺塔问题的解法:
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层从临时中转地搬运到目标地
}
}
分享到:
相关推荐
简单的递归实现汉诺塔程序,是经典的递归应用程序~
简单的非递归汉诺塔实现,C++初学者交流用。使用的经典的两部算法。
汉诺塔-汉诺塔的非递归实现源码和原理讲解---从网上整理的
汉诺塔问题:该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个...
利用函数递归调用的方法,实现了汉诺塔问题
两种移动方法(鼠标、键盘),附带演示功能,有背景音乐 ...或者利用键盘上的上下左右光标键控制木块移动:先按“左”、“右”键移动光标到某柱子下,按“上”键,柱子顶上的木块弹起,再左右移动光标,按“下”键木块...
c++递归实现汉诺塔问题。 算法分析与设计 例题的源码实现。跟书上的一样。
汉诺塔的非递归实现,c++实现的,很简单,只有50多行,从递归的汉诺塔改编而来,将原来递归时的参数状态保存在栈中,入栈代替递归,出栈代替递归返回。
本文实例讲述了Python递归实现汉诺塔算法。分享给大家供大家参考,具体如下: 最近面试题,面试官让我5分钟实现汉诺塔算法(已然忘记汉诺塔是啥)。 痛定思痛,回来查了一下汉诺塔的题目和算法。题干与实现如下: A...
人工智能课的一个作业,实现了汉诺塔-非递归-java代码,并附有实验说明、报告
用非递归算法,用栈解决问题,C#语言,来解决汉诺塔移动问题
matlab递归实现汉诺塔m函数文件 压缩包中含有两个文件hannuota.m和hanoi.m 其中,hannuota.m无动画演示,调用格式为: >>hannuota(5,'A','B','C') hanoi.m有动态演示汉诺塔功能,是在hannuota.m的基础上实现,调用...
描述:递归解决汉诺塔问题 使用技术:java swing 工具:Eclipse 主程序:hanno.app.AppMain
hanoi,汉诺塔问题,汇编语言经典解法,利用递归调用,经典
使用C语言、递归函数实现的汉诺塔, 对递归不清楚的可以参考。
汉诺塔程序,能以图形的方式显示出汉诺塔,并能显示出盘子在汉诺塔之间的的移动过程
汉诺塔的演示过程,运用递归调用,C语言课程设计
在VC6中,用递归方法实现汉诺塔算法,列出移动方法
汉诺塔是一种古老的游戏,是指在一柱[设为'甲'柱]上从下向上依次放着从大到小的一叠盘子,要把该柱['甲'柱]上的盘子全部搬到指定的柱上[设为'乙'柱],在搬运过程中,可以利用另外一根柱子[设为'丙'柱]来协助搬移,...
递归实现汉诺塔问题//递归实现模拟汉诺塔 #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define ORDER 3 //汉诺塔阶数 typedef int Status;//函数执行状态 typedef struct{ int count;//当前...