递归的两个特点、典型案例----汉诺塔问题

一、递归的两个特点

1、要自己调用自己

2、递归函数里要有结束条件。

二、汉诺塔问题

        有三根柱子,现在在一根柱子上,从下往上,按照大小顺序摞着很多盘子。现在要把这些盘子全部放到另一根柱子上,且盘子依然按照从大到小顺序摞着。

要求:每次只能移动一个盘子,在小盘子上不能放大盘子。

原理:

当盘子个数为n个时:

第一步:把n-1个盘子,从A经过C移动到B;

第二步:把第n个盘子,从A移动到C;

第三步:把n-1个盘子从B经过A移动到C。

代码实现:

# 把两个盘子从A柱子移动到C柱子
def hanoi(n, a, b, c):if n > 0:hanoi(n - 1, a, c, b)print("把%s移动到%s" % (a, c))hanoi(n - 1, b, a, c)hanoi(2, "A", "B", "C")# 结果:
把A移动到B
把A移动到C
把B移动到C

# 移动三个盘子
def hanoi(n, a, b, c):if n > 0:hanoi(n - 1, a, c, b)print("把%s移动到%s" % (a, c))hanoi(n - 1, b, a, c)hanoi(3, "A", "B", "C")# 结果:
把A移动到C
把A移动到B
把C移动到B
把A移动到C
把B移动到A
把B移动到C
把A移动到C

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/263370.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Cisco Packet Tracer】路由器 NAT实验

NAT的实现方式有三种,即静态转换Static Nat、动态转换Dynamic Nat和端口多路复用OverLoad。 静态转换是指内部本地地址一对一转换成内部全局地址,相当内部本地的每一台PC都绑定了一个全局地址。一般用于在内网中对外提供服务的服务器。 [3] 动态转换是指…

Go Changes--Russ Cox在GopherCon 2023的演讲

本内容是Go项目负责人Russ Cox 2023年10月在 GopherCon 上发表的演讲[1] (后面重新录制)的摘要与记录. 主要内容是讲述为什么 Go 必须随着时间的推移而改变,以及为何加入遥测是重要且合适的 本次演讲不是关于Go某些特定的更改,而是修改的整体过程,特别是…

Git—文件添加查看删除修改

目录 1.添加文件—场景一 2.查看.git文件 3.添加文件—场景三 4.修改文件 5.版本回退 6.撤销修改 7.删除文件 1.添加文件—场景一 在包含.git的目录下新建⼀个ReadMe文件,我们可以使用 git add 命令可以将文件添加到暂存 区: ●添加一个或多个文…

从零开始训练一个ChatGPT大模型(低资源,1B3)

macrogpt-prertrain 大模型全量预训练(1b3), 多卡deepspeed/单卡adafactor 源码地址:https://github.com/yongzhuo/MacroGPT-Pretrain.git 踩坑 1. 数据类型fp16不太行, 很容易就Nan了, 最好是fp32, tf32, 2. 单卡如果显存不够, 可以用优化器adafactor, 3. 如果…

文心一言 VS 讯飞星火 VS chatgpt (153)-- 算法导论12.2 9题

九、用go语言,设 T 是一棵二叉搜索树,其关键字互不相同;设 x 是一个叶结点,y 为其父结点。证明: y.key 或者是 T 树中大于 x.key 的最小关键字,或者是 T 树中小于 x.key 的最大关键字。 文心一言: 要证明…

Excel——TEXTJOIN函数实现某一列值相等时合并其他列

一、TEXTJOIN函数介绍 公式TEXTJOIN(分隔符, 忽略空白单元格, 字符串1…) 分隔符:文本字符串,或者为空,或用双引号引起来的一个或多个字符,或对有效文本字符串的引用。如果提供一个数字,则将被视为文本。 忽略空白单…

SpringMVC修炼之旅(3)REST风格与拦截器

一、概述 1.1简介 Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。 1.2功能 资源:互联网所有的事物都可以被抽象为资源 资源操作…

Mysql- 流程函数-(If, CASE WHEN)的使用及练习

目录 4.1 If函数语法格式 4.2 CASE WHEN 条件表达式格式 4.3 update与 case when 4.4 练习题1 4.5 练习题2 4.6 练习题3-行转列 4.7 牛客练习题 4.8 LeetCode练习题 4.1 If函数语法格式 IF(expr1,expr2,expr3) 解释&#xff1a; 如果表达式expr1true(expr1 <>…

SSL 数字证书的一些细节

参考&#xff1a;TLS/SSL 协议详解(6) SSL 数字证书的一些细节1 证书验证 地址&#xff1a;https://wonderful.blog.csdn.net/article/details/77867063 参考&#xff1a;TLS/SSL协议详解 (7) SSL 数字证书的一些细节2 地址&#xff1a;https://wonderful.blog.csdn.net/articl…

Proteus仿真--基于12864的自制硬件汉字库的应用

本文介绍基于12864的自制硬件汉字库的应用设计&#xff08;完整仿真源文件及代码见文末链接&#xff09; 其中12864LCD中显示的汉字是存储在2块AT24C1024芯片中 仿真图如下 仿真运行视频 Proteus仿真--基于12864的自制硬件字库的应用 附完整Proteus仿真资料代码资料 链接&am…

【C++进阶】AVL树

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…

论文阅读[2023ICME]Edge-FVV: Free Viewpoint Video Streaming by Learning at the Edge

Edge-FVV: Free Viewpoint Video Streaming by Learning at the Edge 会议信息&#xff1a; Published in: 2023 IEEE International Conference on Multimedia and Expo (ICME) 作者&#xff1a; 1 背景 FVV允许观众从多个角度观看视频&#xff0c;但是如果所选视点的视频…