1 / 3
文档名称:

汉诺塔递归算法.doc

格式:doc   大小:52KB   页数:3页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

汉诺塔递归算法.doc

上传人:2210620458 2021/11/3 文件大小:52 KB

下载得到文件列表

汉诺塔递归算法.doc

文档介绍

文档介绍:
问题抽象
3个塔,n个碟子
初始:所有碟子放在1号塔,大的在底下,小的在上面 任务:把碟子移动到2号塔,顺序不变,可用3号塔辅助 限制
每次只能移动一个碟子
总是人碟子在下,小的在上
递归解法
移动碟子的方法:move(n, tl, t2, t3)
将n个碟子从tl移到t2, t3辅助
可分解为3个步骤
将 n-l 个碟子从 tl 移到 t3: move(n-l, tl, t3, t2)
将最大的碟子从tl移到t2
将 n-l 个碟子从 t3 移到 t2: move(n-l, t3, t2, tl) 汉诺塔递归程序
void TowersOfHanoifint n, int x, int y, int z)
{// Move the top n disks from tower x to tower y.
// Use tower z for intermediate storage.
if (n > 0) {
TowersOfHanoi(n-l, x, z, y);
cout« "Move top disk from tower" « x
« " to top of tower " « y « endl;
TowersOfHanoi(n-l, z, y, x);}
}
moves(n)=2n-l 最少次数,@(2n)
一般递归程序转换为循坏
递归函数主体的转换 转换为循环,while(l)即可 递归调用的转换
将当前参数、局部变量…(活动记录)压栈
参照调用方式改变参数,继续循环 函数执行结束一一递归返回的处理 若栈空,整个递归过程结束,跳出循环 否则,将调用者的活动记录弹出栈,恢复其坏境,继续循坏 递归函数不同入口的区分一一返回地址的处理
上例:ENTRANCE. FIRST、SECOND
活动记录的一部分,与参数、局部变量一同压栈、出栈 在循环主体中,根据当前活动记录的入I I值,执行不同代码 汉诺塔的递归栈实现
#include <>
#include <>
#include <>
#inelude <iostream>
#inelude <stack>
using namespace ::std;
enum {
ENTRANCE = 0,
FIRST
SECOND
};
struct ac {
int nz x, y, z;
int r;
};
汉诺塔的递归栈实现
void hanoi(int n, int x, int y, int z)
{
stack<struct ac> stack;
struct ac ac = { n, x, y, z, ENTRANCE };
while (1)
{
if ( <= 0)
{
if (())
break;
ac = ();
();
if (== ENTRANCE)

最近更新

宣传交通安全倡议书合集 14页

异构云平台中能源高效的虚拟机动态整合研究的.. 2页

延庆油田含油污泥无害处理研究的开题报告 2页

应用超高压技术延长低温火腿的货架期的开题报.. 2页

广西北部湾海洋产业发展对策研究的开题报告 2页

幼儿园美术区域活动中教师支持的研究的开题报.. 2页

平安养老保险股份有限公司浙江分公司团体保险.. 2页

巷道掘进面穿越含瓦斯断层带突出机理研究的开.. 2页

岩溶地区石灰岩疲劳特性试验研究及工程应用的.. 2页

山洪灾害监测预警管理系统设计与实现中期报告.. 2页

山东部分地区鸭病毒性肝炎流行病学调查的开题.. 2页

山东临沂地区汉画像石的叙事空间表现研究的开.. 2页

尿膀胱肿瘤抗原及生存蛋白联合监测膀胱肿瘤复.. 2页

小鼠角质细胞生长因子缺失对创面愈合的影响的.. 2页

化学方程式的书写和计算 9页

小儿肺炎中医治疗方案优化与评价的多中心研究.. 2页

对《自己的一间屋》的反讽研究的开题报告 2页

《雷雨》话剧剧本(第三幕) 20页

扁桃体炎的健康宣教ppt 27页

学生请假条模板[常用15篇] 9页

关于楼房封顶的对联 3页

消防楼梯施工方案 5页

学习防性侵教育心得体会 3页

个人防护用品化工PPT教案 80页

拉丁语谚语 11页

篮球的起源和介绍 ppt课件 20页

书记讲党课“守纪律,讲规矩”党支部专题党课.. 47页