scratch-汉诺塔自动版

通过递归可以快速简单获得汉诺塔的解决方法。

配图只有三层,实际上可以调节参数实现7层及以内的汉诺塔自动程序,通过增加角色,也可以实现更多层数。

汉诺塔是很多初学程序者的天花板,时隔多年重新审视,其实难度并不大。

要把A柱圆盘移动到C柱,假设A柱只有一个圆盘,只需要直接移动A柱圆盘到C柱,如果A柱有两个圆盘,需要首先移动A柱最上面一个圆盘到B柱,再移动A柱最上面一个圆盘到C柱,最后移动B柱最上面一个圆盘到C柱,三个步骤。知道上面这些步骤就可以开始写程序。程序的四个参数分别表示层数、A柱、B柱、C柱。举个例子,汉诺塔(1,A,B,C),意思是将A柱最上面的圆盘移动到C柱,汉诺塔(3,B,C,A)意思是将B柱上面的三个圆盘移动到A柱上面。

怎样才能将一个柱子顶上的圆盘移动到另外一根柱子呢?

我们设置7个圆盘,每个圆盘有一个私人编号,创建一个适用于全部角色的横坐标列表和纵坐标列表。每个角色和横坐标、纵坐标列表里面的一组坐标对应,修改坐标角色就会移动到相应的位置。7个角色一共是7个坐标。

然后再创建三个列表分别存储三个柱子上面的圆盘顺序。假如移动A柱一个圆盘到C柱,只需要将A柱的第一项移动到C柱即可。细分为两个步骤,在C柱第一项前插入A柱的第一项,删除A柱第一项。

如果要移动A柱最顶上的一层到达B柱,需要找到A柱列表的第一项值,获得角色的编号,将其横坐标和纵坐标修改到B柱上面。因为角色里面有一个无限循环,会自动将将角色下落。

注意事项:

不要开加速模式

每移动一个圆盘需要留一点时间来缓冲。

欢迎大家留言

获取程序:

链接:https://pan.baidu.com/s/1QobPXbWP4ASBnuDyMWT9Cw
提取码:bwnq
复制这段内容后打开百度网盘手机App,操作更方便哦

发表评论

电子邮件地址不会被公开。