你能挺过第七关吗?汉诺塔练习——python(2.番外篇)

   日期:2020-04-29     浏览:110    评论:0    
核心提示:python——汉诺塔前言游戏规则代码演示主要代码讲解展示效果致谢前言相信大家都曾玩过汉诺塔这个游戏python

python——汉诺塔

  • 前言
  • 游戏规则
  • 代码演示
  • 主要代码讲解
  • 展示效果
  • 致谢

前言

相信大家都曾玩过汉诺塔这个游戏,可是呢,往往就在第六第七个就写不下去了,甚至就在第四第五个,就不知道该怎么办了,下面,我就用python来解决这个问题。

游戏规则

A,B,C三个圆柱,分别为初始位,过渡位,目标位,设A柱为初始位,C位为最终目标位

1. A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘
2. 并且每次移动同一根柱子上都不能出现大盘子在小盘子上
3. 把所有盘的子一个一个按从小到大的顺序移动到柱子C上
4.其每次只能移动一次

代码演示

话不多说,先看源码:

def fn(s, a, b, c):  
    # 基线条件
    if s == 1:
        print(a, '→', c)
    else:
        fn(s-1, a, c, b)
        print(a, '→', c)
    # 递归条件
        fn(s-1, b, a, c)  
fn(3, 'A', 'B', 'C')

主要代码讲解

  • 在第一行代码中
    s为圆盘数,a代表初始位圆柱,b代表过渡位圆柱,c代表目标位圆柱
  • 在第六行代码中
    将初始位的s-1个圆盘移动到过渡位,此时初始位为a,上一级函数的过渡位b即为本级的目标位,上级的目标位c为本级的过渡位
  • 在第九行代码中
    将过渡位的s-1个圆盘移动到目标位,此时初始位为b,上一级函数的目标位c即为本级的目标位,上级的初始位a为本级的过渡

展示效果

  • 如果参数输入3
    A → C
    A → B
    C → B
    A → C
    B → A
    B → C
    A → C
  • 如果参数输入4
    A → B
    A → C
    B → C
    A → B
    C → A
    C → B
    A → B
    A → C
    B → C
    B → A
    C → A
    B → C
    A → B
    A → C
    B → C

……(后面太多,这里就只展示两个, 望谅解)

(转载)思维导图:

致谢

最后,感谢你们,我才有今天这样的成绩,继续加油

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服