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

用Python定义一个函数,用递归的方式模拟汉诺塔问题

【任务需求】

定义一个函数,用递归的方式模拟汉诺塔问题,三个柱子,分别为A、B、C,其中A柱子上有N个盘子,从小到大编号为1到N,盘子大小不同。现在要将这N个盘子从A柱子移动到C柱子上,但移动的过程必须遵循以下规则:

1.每次只能移动一个盘子;

2.盘子只能放在空柱子或者比自己大的盘子上面;

3.每次只能移动最上面的盘子。

代码展示:

# 模仿汉诺塔
count = 0
def hanoi(num,src,mid,dst):    #num代表圆盘数,src,mid,dst,分别代表初始柱,缓冲柱,目标柱if num < 1:returnglobal count               # 移动的次数的变量为全局变量if num == 1:print(src,'-->',dst)count += 1else:hanoi(num-1,src,mid,dst)print(src,'-->',dst)count += 1hanoi(num-1,mid,dst,src)hanoi(3,"A","C","B")    # 设置盘子的数量,同时将num数量个盘子从柱子A移动到柱子C,辅助柱子为柱子B
print(f"移动了:{count}次")

运行结果

http://www.lryc.cn/news/211366.html

相关文章:

  • 二手的需求
  • 大厂面试题-JVM为什么使用元空间替换了永久代?
  • 基本微信小程序的驾校宝典系统-驾照考试系统
  • 02、SpringCloud -- Redis和Cookie过期时间刷新功能
  • 【报错】kali安装ngrok报错解决办法(zsh: exec format error: ./ngrok)
  • <学习笔记>从零开始自学Python-之-常用库篇(十三)内置小型数据库shelve
  • Redis快速上手篇七(集群-六台虚拟机)
  • LeetCode 301. 删除无效的括号【字符串,回溯或BFS】困难
  • 面试经典159题——Day25
  • C# OpenCvSharp DNN 部署L2CS-Net人脸朝向估计
  • Windows环境下MosQuitto服务器搭建,安装mqtt服务端软件
  • web前端JS基础-----制作进度条
  • Linux命令解压多个tar.gz包
  • Java基于SpringBoot+Vue的网上图书商城管理系统(附源码,教程)
  • Visual Studio Code的下载与安装
  • 23种设计模式在SpringCloud源码里的应用
  • 几个精致的Linux命令
  • CoDeSys系列-3、Windows运行时软PLC主站和p-net从站IO设备组网测试
  • vscode下ssh免密登录linux服务器
  • 基于jquery+html开发的json格式校验工具
  • 【面试经典150 | 栈】最小栈
  • Linux网络基础2 -- 应用层相关
  • 【Python机器学习】零基础掌握SkewedChi2Sampler内核近似特征
  • Unity Meta Quest 一体机开发(三):Oculus Integration 基本原理、概念与结构+玩家角色基本配置
  • excel 拼接字符 单元格
  • HarmonyOS 快速入门TypeScript
  • ChatGPT扩展系列之ChatExcel
  • AM@微元法和定积分的应用@平面图形面积@立体体积@曲线弧长
  • SparkStreaming【实例演示】
  • 提高抖音小店用户黏性和商品销量的有效策略