学习网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 41431|回复: 0
收起左侧

高级语言程序设计 - 吉林大学-9.4.2 手工执行汉诺塔程序

[复制链接]
发表于 1-26 01:41 | 显示全部楼层 |阅读模式
汉诺塔这个程序咱们编出来了也执行了但是那个程序  
有点太神奇那么复杂一个问题怎么就那么几行程序  
就能解决了呢下面  
手工的模拟  
执行一下这个程序看一看  
让大家信服首先执行主程序  
就执行这几行先输出个提示信息  
然后输入一个  
金片个数  
别整太大了输入 3 之后  
调用 move 函数进入 move 函数之后  3 大于 0执行什么执行这样三条move n-1  
moveone  
move n-1执行这三条这三条  
经过参数替换a b c  
替换 x y z替换之后  
应该是这样然后  
执行这三条 一条条来  
先执行头一条头一条  
move 2 a c b  
执行它调用函数  
又执行这三条2 大于 0执行这三条  
经过参数替换实际上把 a b c  
都替换进去  
不是 x y z 了就是这三条  
执行这三条一条条执行头一条  
move 1 a b c  
先执行这条进入  
move  
执行  
进去之后执行啥  
n 大于 1  
还是执行三条执行  
这三条  
参数替换把 x y z  
都替换成 a b c应该是  
这样三条这样三条  
执行  
一条条执行执行头一条  
move 0进去之后  
返回  
没有任何动作  
n 等于 0 返回然后  
执行下一条  
moveone打印  
a 到 b然后  
再执行下一条 move 0  
进去  
就返回来了这三条  
执行完了  
返回返回到哪儿哪调用的  
返回到哪就是说  
从 move  
1 a b c  
调用的在这三条  
三条  
咱都这么分别  
摆出来了实际  
在程序里头  
就那三行程序就返回到  
头一行然后  
在这  
往下执行往下执行 moveone打印  
a 到 c再往下执行又执行  
move  
1 b c a就执行这条调用 move 函数进入 move 函数  
n 等于 1  
大于 0执行三条参数替换参数替换之后执行什么把 a b c  
换 x y z执行头一条他是什么  
n 等于 0调用  
就返回了执行第二条  
moveone  
b 到 c  
打印一个信息执行第三条  
又是  
move  
0也是  
进去  
就返回来了这三条执行完了  
返回返回到哪儿从哪调用的  
返回到哪move  
1 b c a  
从那调用的  
返回到那去返回来了继续往下执行再返回  
返回到哪儿返回到 move  
2 a c b  
后边返回到这也就是  
那三条的  
头一条的位置完了  
执行  
moveone  
a  
b打印 a 到 b然后  
再往下执行第三条  
move  
2 c b a调用 move函数  
又进入 move进入 move 之后n 大于 0  
执行三行这三行  
进行参数替换参数替换之后  
就是这个把 a b c 都替换 x y z一条条执行执行头一条进入 move 函数  
n 大于 0  
执行三行参数替换  
这三行a b c  
让它换进去n 也换进去就执行这三行头一行 n 等于 0调用函数  
进去之后  
就返回来第二行  
打印一个 c 到 a第三行  
执行的时候n 等于 0 进去  
就返回来三行执行完了  
返回返回到  
move 1 c b a就是三行的  
头一行往下执行  
打印一个 c 到 b然后继续往下执行  
move 1 a b c调用 move 函数就这样  
三行写下来然后  
进行参数替换参数替换完之后  
实际上是这个参数替换之后  
开始执行  
一行一行头一行 n 等于 0进去之后  
就返回来了  
不做什么第二行  
moveone  
打印一个 a 到 b第三行n 等于 0 进去  
就返回来然后  
返回返回到哪儿返回到 move 1 a b c  
返回到这在三行程序里头真正三行程序里头  
第三行的末尾到这  
开始返回返回到哪也是返回到  
第三行的末尾也就是 move 2 c b a在这  
咱抻开看  
是这个地方三行执行完  
继续返回 三行执行完  
继续返回 返回到哪儿返回到哪儿在主程序里  
调用的  
返回到  
主程序里去从主程序  
继续往下执行  
程序就执行完了打印出来的这七行  
就是移动次序手工执行一下一看也是这样  
所以  
程序肯定是对的看一下  
这个结果是不是  
移动一下次序首先 a 到 b 移一个然后  
a 到 c 一个然后  
b 到 c 移一个n-1片  
移到 c 针上去然后 a 到 b  
再移一个一片  
移到 b 针再把 n-1 片  
移到 b 针上去那怎么办c 针  
移到 a 针上  
一个c 针  
再移到 b 针上  
一个然后  
a 针  
再  
移到 b 针上  
一个结束了  
这样七步  
是对的这个程序  
是能够得到正确结果的汉诺塔程序  
就介绍到这[此为课程内容大纲,相关资源下载地址请在论坛搜索标题名称]

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|学习资源网 ( 粤ICP备16100991号-2 )

GMT+8, 12-3 11:22 , Processed in 0.143718 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc. Template By ¡¾Î´À´¿Æ¼¼¡¿¡¾ www.wekei.cn ¡¿

快速回复 返回顶部 返回列表