当前位置: 首页 > article >正文

汉诺塔..

本节通过学习汉诺塔这个经典的问题来更加熟练运用递归算法.

问题描述:

圆盘按从大到小的顺序依次排在石柱上,在三根柱子间一次只能移动一个圆盘,如何将全部圆盘从第一根柱子移动到第三根

思路解析:

先从简易问题入手,当a柱上有n个圆盘时,先将第n-1个圆盘当作一个整体,移动到中转石柱b上,再将最大的圆盘移动到石柱c上,最后将石柱b上的n-1个圆盘移动到目标柱c即可完成.那么递归的终止条件就是,当要移动的圆盘个数为1时,只需输出将圆盘从石柱a移动到目标石柱即可.变量如下:

a变量:表示圆盘最初所在的石柱a

b变量:表示中转石柱b

c变量:表示目标石柱c

n变量:表示将n个圆盘从a经过b移动到c

time变量:表示第几步

代码如下:

count=0#计数工具
def hanoi(n,x,y,z):#把n个圆盘从x借助y移动到z上
    
    if n==1:
        global count
        count +=1
        print(count,' : ',x,'-->',z)
    else:
        #把n-1个盘子由x借助z移动到y
        hanoi(n-1,x,z,y)
        #把第n个盘子由x移动到z
        count += 1
        print(count,' : ',x,'-->',z)
        #把n-1个盘子由y借助x移动到z
        hanoi(n-1,y,x,z)

n=int(input("请输入圆盘个数:"))
hanoi(n,'tower1','tower2','tower3')


http://www.kler.cn/a/470126.html

相关文章:

  • 【计算机操作系统:三、操作系统的用户接口】
  • 【银河麒麟高级服务器操作系统实例】tcp半链接数溢出分析及处理全过程
  • VR+智慧消防一体化决策平台
  • 计算机网络:网络层知识点及习题(一)
  • Qt 5.14.2 学习记录 —— 삼 初级认识
  • 【Qt】控件概述和QWidget核心属性1(enabled、geometry、windowTitle、windowIcon、QRC机制)
  • React:构建现代 Web 应用的利器
  • 基于Node.js的水产品销售平台
  • linux 查看 MySQL 在 Linux 或 WSL 上的运行状态
  • WebSocket 测试调试:工具与实践
  • 哺乳动物各器官和物种中长链非编码RNA的发育动态
  • JMeter + Grafana +InfluxDB性能监控 (二)
  • 『SQLite』索引
  • 用MATLAB实现d2d通信中的模式选择
  • JS中函数基础知识之查漏补缺(写给小白的学习笔记)
  • Python AI教程之十一:监督学习之决策树(2)使用 sklearn 进行决策树回归
  • 6miu盘搜的使用方法
  • 如何利用Java爬虫批量获取商品信息
  • [python SQLAlchemy数据库操作入门]-23.SQLAlchemy 与 Redis 结合:缓存热门股票数据
  • 十种基础排序算法(C语言实现,带源码)(有具体排序例子,适合学习理解)
  • 动手学深度学习-深度学习计算-6GPU
  • 记一次k8s下容器启动失败,容器无日志问题排查
  • 日志记录:追踪你的Java行动轨迹
  • 微软 2024 最新技术全景洞察
  • NO.1 《机器学习期末复习篇》以题(问答题)促习(人学习),满满干huo,大胆学大胆补!
  • sql server cdc重启监控新加表字段