| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1132 人关注过本帖
标题:汉诺塔 vfp解决 哪位高手详细解释下过程由来
只看楼主 加入收藏
qq252649272
Rank: 1
等 级:新手上路
帖 子:8
专家分:3
注 册:2010-5-20
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:7 
汉诺塔 vfp解决 哪位高手详细解释下过程由来

set talk off
clear
public num
num=0
input "金片数量:" to n
do haoni with n,"A","B","C"
?"总移动次数为:",num
set talk on
return

proce haoni
para m,ca,cb,cc
if m=1
    do mymove with ca,cc
else
    do haoni with m-1,ca,cc,cb
    do mymove with ca,cc
    do haoni with m-1,cb,ca,cc
endif
return
endproc

proce mymove
para ca,cc
num=num+1
?m-1,ca,cc,cb
?ca,cc
?m-1,cb,ca,cc
return
endproc
运行时,那些ABC是什么意思啊 还有怎么是0ABC或者1
m-1怎么是那样

[ 本帖最后由 qq252649272 于 2010-5-20 01:03 编辑 ]
搜索更多相关主题的帖子: 解释 vfp 汉诺塔 
2010-05-20 01:01
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:1 
这些都是变量名,是传递给程序(也可以说是自定义函数)的参数。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2010-05-20 07:52
qq252649272
Rank: 1
等 级:新手上路
帖 子:8
专家分:3
注 册:2010-5-20
收藏
得分:0 
怎么来的啊
详细解释下咯
谢谢
2010-05-20 21:01
qq252649272
Rank: 1
等 级:新手上路
帖 子:8
专家分:3
注 册:2010-5-20
收藏
得分:0 
回复 2楼 hu9jj
详细解释下为什么要这样写咯
谢谢
我是大一新生,想学习下
2010-05-20 21:08
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
收藏
得分:10 
本人理解:
 set talk off
 clear
 public num
 num=0
 input "金片数量:" to n

 do haoni with n,"A","B","C"     && 第1行参数
 ?"总移动次数为:",num
 set talk on
 return

 proce haoni                     && 执行换位   
 para m,ca,cb,cc &&              && 第2行参数 首次代入 m=n,ca="A",cb="B",cc="C"
  if m=1
     do mymove with ca,cc        && 参数的显示
  else
     do haoni with m-1,ca,cc,cb  && 2次代入 m=m-1,ca=ca,cb=cc,cc=cb 2行同位参数=本行的参数,再执行换位
     do mymove with ca,cc        && 参数的显示
     do haoni with m-1,cb,ca,cc  && 3次代入 m=m-1,ca=cb,cb=ca,cc=cc 2行同位参数=本行的参数 再执行换位
 endif
return
endproc

 proce mymove && 参数的显示
 para ca,cc
 num=num+1
 ?m-1,ca,cc,cb && m-1 显示 0 时,类似于显示大写字母 'O' (美观吧,否则 1 太多啦)
 ?ca,cc
 ?m-1,cb,ca,cc
 return
 endproc
2010-05-21 01:14
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:4 
补充:
第1行参数是将参数传递给自定义函数,第2行参数是自定义函数接收传递过来的参数。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2010-05-21 07:10
qq252649272
Rank: 1
等 级:新手上路
帖 子:8
专家分:3
注 册:2010-5-20
收藏
得分:0 
回复 5楼 qingfameng
m-1怎么不是从n那一直减小显示下来
都是1,01,0
2010-05-21 12:26
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
收藏
得分:5 
个人理解:在执行过程 do haoni (参数换位传递吧)中,如果 m>1时,会继续重复执行 proce haoni,一直到 m=1 时,才执行 do mymove 显示,跳出  if .. endif 的条件。所以,显示的 m-1 值必然从 0 开始。  
实际上, m>1 时,else 后面的第2句 do mymove with ca,cc 与第3句 do haoni with m-1,cb,ca,cc 是相当于若干个相同的过程模块,排在了一起,从第1个模块开始执行,一直到到最后一个模块为止。   

[ 本帖最后由 qingfameng 于 2010-5-23 10:26 编辑 ]
2010-05-23 10:11
快速回复:汉诺塔 vfp解决 哪位高手详细解释下过程由来
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015998 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved