首页 > 编程语言 >Python基础入门学习笔记 024 递归:汉诺塔

Python基础入门学习笔记 024 递归:汉诺塔

时间:2023-08-23 10:02:15浏览次数:38  
标签:移到 Python hanoi 024 63 汉诺塔 盘子 移动

递归求解汉诺塔

•对于游戏的玩法,我们可以简单分解为三个步骤

–将前63个盘子从X移动到Y上。

–将最底下的第64个盘子从X移动到Z上。

–将Y上的63个盘子移动到Z上。

•问题一:将X上的63个盘子借助Z移到Y上;

•问题二:将Y上的63个盘子借助X移到Z上。

•对于游戏的玩法,我们可以简单分解为三个步骤

–将前63个盘子从X移动到Y上。

–将最底下的第64个盘子从X移动到Z上。

–将Y上的63个盘子移动到Z上。

•问题一:将X上的63个盘子借助Z移到Y上;

•问题二:将Y上的63个盘子借助X移到Z上。

实例:

 1 def hanoi(n, x, y, z):
 2     if n == 1:
 3         print(x, ' --> ', z)
 4     else:
 5         hanoi(n-1, x, z, y) # 将前n-1个盘子从x移动到y上
 6         print(x, ' --> ', z) # 将最底下的最后一个盘子从x移动到z上
 7         hanoi(n-1, y, x, z) # 将y上的n-1个盘子移动到z上
 8 
 9 n = int(input('请输入汉诺塔的层数:'))
10 hanoi(n, 'X', 'Y', 'Z')

标签:移到,Python,hanoi,024,63,汉诺塔,盘子,移动
From: https://www.cnblogs.com/ybqjymy/p/17650340.html

相关文章

  • Python基础入门学习笔记 025 字典:当索引不好用时
    映射 创建和访问字典>>>dict4=dict(小甲鱼='让编程改变世界',李宁='一切皆有可能')>>>dict4{'小甲鱼':'让编程改变世界','李宁':'一切皆有可能'}>>>dict4['爱迪生']='天才是99%的汗水加1%的灵感'>>&g......
  • Python基础入门学习笔记 021函数:lambda表达式
    lambda表达式的作用•Python写一些执行脚本时,使用lambda就可以省下定义函数过程,比如说我们只是需要写个简单的脚本来管理服务器时间,我们就不需要专门定义一个函数然后再写调用,使用lambda就可以使得代码更加精简。•对于一些比较抽象并且整个程序执行下来只需要调用一两次的函......
  • Python基础入门学习笔记 022 函数:递归是神马
    汉诺塔游戏 树结构的定义 谢尔宾斯基三角形递归求阶乘•写一个求阶乘的函数–正整数阶乘指从1乘以2乘以3乘以4一直乘到所要求的数。–例如所给的数是5,则阶乘式是1×2×3×4×5,得到的积是120,所以120就是4的阶乘。•假设我们n的值传入是5,那么: 实例:求阶乘1deffac......
  • Python基础入门学习笔记 023 递归:这帮小兔崽子
    坑爹的兔子斐波那契数列的迭代实现我们都知道兔子繁殖能力是惊人的,如下图: 我们可以用数学函数来定义: 课间练习:假设我们需要求出经历了20个月后,总共有多少对小兔崽子?(迭代 vs 递归)1deffab(n):2n1=13n2=14n3=156ifn<1:7......
  • Python基础入门学习笔记 015字符串:格式化
     字符串格式化符号含义 将ASCII码97对应的字符输出 格式化整数 格式化操作符辅助命令5表示输出为五位数Python的转义字符及其含义......
  • Python基础入门学习笔记 016 序列!序列!
    •列表、元组和字符串的共同点–都可以通过索引得到每一个元素–默认索引值总是从0开始–可以通过分片的方法得到一个范围内的元素的集合–有很多共同的操作符(重复操作符、拼接操作符、成员关系操作符)使用list方法 元组转换为列表 max()返回序列或者参数集合中的最大......
  • Python基础入门学习笔记 018 函数:灵活即强大
    形参和实参>>>defMyFirstFunction(name):'函数定义过程中的name是叫形参'#因为Ta只是一个形式,表示占据一个参数位置print('传递进来的'+name+'叫做实参,因为Ta是具体的参数值!')>>>MyFirstFunction('小甲鱼')传递进来的小甲鱼叫做实参,因为Ta是具体的参数值!关键字参数......
  • Python 调试工具PDB的基本使用
    用法pdb工具是Python自带的调试工具,可以在命令行下进行代码调试。使用示例:importpdbnum_a=1num_b=2pdb.set_trace()sum=num_a+num_b运行效果如图:常见命令break或b:设置断点continue或c:继续执行程序list或l:查看当前行的代码段step或s:进入函数......
  • Python基础入门学习笔记 011列表:一个打了激素的数组2
    从列表中获取元素•跟数组一样,我们可以通过元素的索引值(index)从列表获取单个元素,注意,列表索引值是从 0 开始的。 从列表删除元素 remove()函数表示从列表中删除某个元素 del()函数也表示从列表中删除某个元素 pop()函数从列表中取出最后一个元素列表分片(Slice)•......
  • Python基础入门学习笔记 012列表:一个打了激素的数组3
    列表的一些常用操作符•比较操作符 •逻辑操作符 •连接操作符 •重复操作符 •成员关系操作符 关于分片“拷贝”概念的补充 >>>dir(list)可查看所有列表的操作函数 count()函数可计算列表中相同元素个数 index()函数可索引列表元素 reverse()将列......