请教一个汉诺塔算法问题

js用递归实现一个汉诺塔的完成步骤,相信很多同学都会。
我自己业余的时候写了个汉诺塔的游戏,里面有一个提醒功能, 用户点提醒,程序利用递归实现一个完成步骤,然后操作页面元素根据这个步骤来实现。
局部代码如下:

https://img2.mukewang.com/5c0a173b0001aefe07510493.jpg

一切都没什么问题, 现在碰到的难题是, 这只能完全是一个新关卡,用户没有移动过任何圆盘的情况下,生成的一个步骤列表, 如果用户移动过圆盘, 比如现在第一根圆柱上面3个圆盘, 第二个上面2个圆盘,第三个上面1个圆盘, 用户被难住了,不知道下一步该怎么走了,这时候点提醒, 怎么根据当前的局势来生成后续的步骤算法呢? 
说来比较惭愧, 这个游戏半年前写的, 到目前为止这个提醒功能还没完成, 我一点头绪都没有。

ITMISS
浏览 583回答 1
1回答

饮歌长啸

如果需要这样的提醒功能,比你现在的复杂一些,需要纪录状态。比如你这个例子是6个圆盘,第一根柱子上3个圆盘,有可能是456,也有可能是135,你需要明确现在的状态,然后完成步骤再从上向下分解。if 最大圆盘不在目标圆柱上 {  if 最大圆盘不能直接移动到目标圆柱 {    其他圆盘移动到“中间”圆柱(规模减一)  //非最大圆盘所在圆柱和目标圆柱  }   移动最大圆盘到目标圆柱}移动其他圆盘到目标圆柱(规模减一)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript