首页 首页 PC游戏快讯 查看内容

汉诺塔游戏之递归函数

2019-10-11 01:41| 发布者: admin| 查看: 120| 评论: 3

摘要: 汉诺塔如图片所示,一般由三根柱子组成,为了方便区分,我这边分别命名为A,B,C三根柱子,游戏开始前所有的圆盘放在A柱子上面。游戏规则如下:1.需要将所有的圆盘从A柱移动到C柱2.每次只能移动一个圆盘3.每根柱子小 ...
     汉诺塔如图片所示,一般由三根柱子组成,为了方便区分,我这边分别命名为A,B,C三根柱子,游戏开始前所有的圆盘放在A柱子上面。

汉诺塔游戏之递归函数

游戏规则如下:

1.需要将所有的圆盘从A柱移动到C柱

2.每次只能移动一个圆盘

3.每根柱子小圆盘必须放在大圆盘上面

4.可以借助B柱帮助实现圆盘移动

玩法分析:当只有一块圆盘时,需要一步即可完成圆盘从A柱移动到C柱,无需使用B柱;当有两块圆盘的时候,需要三步完成所有圆盘从A柱移动到C柱,需要借助B柱。

汉诺塔游戏之递归函数

如上图所示,当有三块圆盘的时候,需要七步能够完成所有圆盘从A柱移动到C柱。举例分析,当n=1时,圆盘从A柱移动到C柱,游戏结束;当n=2时,小的圆盘先从A柱移动到B柱,大圆盘再从A柱移动到C柱,最后将B柱上面的圆盘移动到C柱,游戏结束;当有n个圆盘的时候,圆盘是如何移动到C柱的,它们之间的规律是怎样的?

分析如下:当A柱上有n个圆盘的时候,可以将n个圆盘逻辑上拆分成(n-1)和1这两块圆盘,参照只有两块圆盘的做法,只需将(n-1)这块圆盘先从A柱移动到B柱,再将1这块圆盘从A柱移动到C柱,最后将(n-1)这块圆盘从B柱移动到C柱,“游戏结束”。那(n-1)这块圆盘如何移动的呢,可以将(n-1)个圆盘同样逻辑上拆分成(n-2)和1这两块圆盘,继续参照只有两块圆盘的做法,只需将(n-2)这块圆盘先从A柱移动到B柱,再将1这块圆盘从A柱移动到C柱,最后将(n-2)这块圆盘从B柱移动到C柱,“游戏结束”。如此往复,完成(n-3)、(n-4)…一直到最后为n=1,圆盘从A柱移动到C柱,游戏真正结束。这种情况使用递归的方法可以简单并且清晰的实现,当n=1的时候,就是递归的结束条件。

    

代码如下:

汉诺塔游戏之递归函数

因为递归结束条件的输出形参格式是固定的,所以使用递归函数的时候,可以变动形参的位置,当实参传递过来的时候实现柱子之间的移动。

执行结果如下:(n=1)

汉诺塔游戏之递归函数

(n=2)执行结果:

汉诺塔游戏之递归函数

(n=3)执行结果:



(n=4)执行结果:



当n=4的时候,我已经算不过电脑了。

总结一下:

1.电脑和人脑相比,缺乏自主判断和学习的能力,同样也缺乏获得情感的能力

2.当你告诉电脑干什么的时候,电脑很多方面完成的比人脑更出色

3.随着人工智能的发展和深度神经网络的建立,电脑未来或许可以更智能,替人类

完成更多的工作


更多精彩 VR游戏下载 , VR破解资源 , oculus quest游戏 , 请到520VR游戏交流网

鲜花

握手

雷人

路过

鸡蛋
| 收藏

最新评论(3)

引用 易启妮 2019-11-7 00:02
好帖必须得顶起
引用 a86102766 2019-10-27 00:02
看帖要回,回帖才健康,在踩踩,楼主辛苦了!
引用 玉藻姬夕罗 2019-10-26 00:06
呵呵,低调,低调!
发表文章

520VR公告 (迅雷直连下载已上线)

本站内容全来至于网络收集,用于学习交流请24小时内删除

网站VR学习交流资源更新时间2天/更新1/次,如侵犯到贵公司版权请来信.

本站非实际运营网站,所载全部信息内容均仅作为软件系统功能测试之用,请适量下载.

1.赞助本站送U盘/移动硬盘活动进行中  2.VR国产厂商可免费在本站发布新闻广告

本站不会以任何形式发布、破解、制作盗版中国VR游戏内容,请大家支持中国VR行业发展

我知道了

版权保护投诉指引|小黑屋|520VR游戏客户端|520VR游戏破解汉化玩家交流学习网 |网站地图

Powered by 520VR X3.4  © 2018-2019 版权所有.