递归经典三题

目录1.斐波那契数列:

2.青蛙跳台阶问题:

3.汉诺塔问题


1.斐波那契数列:

由斐波那契数列从第三项开始,每一项等于前两项之和,可以使用递归计算给定整数的斐波那契数。 

  1,1,2,3,5,8,13,21,34,55… 

分析:

从第三项开始,当前项为前两项之和。

注意终止条件有两个n=1,n=2项,

如果n>=3,则进入42行循环,一直自我调用。

2.青蛙跳台阶问题:

题目:从前有一只青蛙他想跳台阶,有n级台阶,青蛙一次可以跳1级台阶,也可以跳2级台阶;问:该青蛙跳到第n级台阶一共有多少种跳法

分析:

刚刚看完这个题目感觉还是有些懵的,但是不能慌我们要一步一步分析找规律。

再分析前三步时,我们好像以为规律是步数就是台阶数等于跳法数,但分析到n=5时,却不一样了。它真正的规律是从第三项开始跳法数等于前一步的跳法数加上前前一步的跳法数。

如何快速得到当前所求的步数?

当n=5时,它一次要么跳一个要么跳两个,

当它跳一个跳向1台阶,还剩下4个台阶,以当前台阶为新起点跳4完个台阶有5种方法,

当它跳两个台阶跳向2台阶,还剩下3个台阶,以第二个台阶为新起点跳完3个台阶有3中方法。

所以跳完5个台阶一共有3+5种方法,

这就是引用了动态规划:用上一步的结果快速计算下一步的结果。

细心的你发现它不就是一个隐藏的斐波那契数列吗!!!

3.汉诺塔问题

题目描述 n个圆盘从下面开始按大小顺序摆放在A柱子上。 并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘,求最少的移动步骤。

分析:

题目要我们求出n个盘子从A柱移动到C柱所需的最少步骤,这题明显是种找规律题目。

所以我们应该先不要慌张,从n为1开始分析,多多分析发现规律。

n=1:

可以直接从A盘移动到C盘不需要经过B盘。这时只需要1步;

n=2:

分析:第一步’A-->B‘

           第二步’A-->C‘

           第三步’B-->C‘

           一共需要三步

n=3:

 一共需要七步

分析:这里好像我们已经发现一个规律,最小步数=2^n-1;

如果n无限大,那么我们是不是可以用分割的思想,将n分为1和n-1;

这时采用递归的方法,递归的终止条件为 n=1

在柱间移动的代码:

分析:

move函数作用来打印 起始位置 到 停留的位置;

fun函数表示每个盘子在ABC三个柱间移动的过程;A:起始柱,B:转移盘,C:目标盘

n为盘子的个数,pose1表示A柱,pose2表示B柱,pose3表示C柱;

代码思路是将盘子分为:1和n-1,

17行:将n-1个盘子从A通过C柱移动到B柱;

18h行:move打印最后一个盘子从A柱移动到C柱;

也就是一开始n个盘子,n!=1,进入fun(n-1,pose1,pose2,pose3)

在 fun(n-1,pose1,pose2,pose3)中,(n-1)!=1,

再进入fun(n-2,pose1,pose2,pose3)

一直地推……

直到n=1,然后回归

递归终止条件为n=1时,只剩下一个盘子就是最底下那个最大的。将此盘直接从A盘-->C盘;

此时n-1个盘子在B柱,在19行,再调用fun函数,将n-1个盘子从B柱通过A柱移动到C柱,任务完成。

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

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

相关文章

酒水品牌网站建设的效果如何

酒是人们餐桌常常出现的饮品,市场中的大小酒品牌或经销商数量非常多,国内国外都有着巨大市场,酒讲究的是品质与品牌,信息发展迅速的时代,商家们都希望通过多种方式获得生意增长。 酒商非常注重品牌,消费者也…

为什么要编写测试用例,测试用例写给谁看?

“为什么要编写测试用例,测试用例写给谁看”,这个问题看似简单,但却涵盖了一系列复杂的考虑因素,并不太好回答。 为了向各位学测试的同学们解释清楚“为什么编写测试用例是至关重要的”,我将通过以下5个方面进行展开&…

EMD、EEMD、FEEMD、CEEMD、CEEMDAN的区别、原理和Python实现(二)EEMD

往期精彩内容: 风速预测(一)数据集介绍和预处理-CSDN博客 风速预测(二)基于Pytorch的EMD-LSTM模型-CSDN博客 风速预测(三)EMD-LSTM-Attention模型-CSDN博客 风速预测(四&#xf…

鸿蒙 - arkTs:渲染(循环 - ForEach,判断 - if)

ForEach循环渲染: 参数: 要循环遍历的数组,Array类型遍历的回调方法,Function类型为每一项生成唯一标识符的方法,有默认生成方法,非必传 使用示例: interface Item {name: String,price: N…

作物模型中引入灌溉参数

在没有设置灌溉时,土壤水分模拟结果如下找到了PCSE包中田间管理文件的标准写法 在agromanager.py中有详细的信息(如何设置灌溉以及施肥量) Version: 1.0 AgroManagement: - 2022-10-15:CropCalendar:crop_name: sugar-beetvariety_name:

HarmonyOS ArkTS 中DatePicker先择时间 路由跳转并传值到其它页

效果 代码 代码里有TextTimerController 这一种例用方法较怪,Text ,Button Datepicker 的使用。 import router from ohos.router’则是引入路由模块。 import router from ohos.router Entry Component struct TextnewClock {textTimerController: TextTimerContr…

管理类联考——数学——真题篇——按题型分类——充分性判断题——蒙猜E

老老规矩,看目录,平均每年2E,跟2D一样,D是全对,E是全错,侧面也看出10道题,大概是3A/B,3C,2D,2E,其实还是蛮平均的。但E为1道的情况居多。 第20题…

Postgresql中自增主键序列的使用以及数据传输时提示:错误:关系“xxx_xx_xx_seq“不存在

场景 Postgresql在Windows中使用pg_dump实现数据库(指定表)的导出与导入: Postgresql在Windows中使用pg_dump实现数据库(指定表)的导出与导入-CSDN博客 上面讲使用pg_dump进行postgresql的导出与导入。 如果使用Navicat可以直接连接两个库,则可直接使…

材料论文阅读/中文记录:Scaling deep learning for materials discovery

Merchant A, Batzner S, Schoenholz S S, et al. Scaling deep learning for materials discovery[J]. Nature, 2023: 1-6. 文章目录 摘要引言生成和过滤概述GNoME主动学习缩放法则和泛化 发现稳定晶体通过实验匹配和 r 2 S C A N r^2SCAN r2SCAN 进行验证有趣的组合家族 扩大…

通用的java中部分方式实现List<自定义对象>转为List<Map>

自定义类 /*** date 2023/12/19 11:20*/ public class Person {private String name;private String sex;public Person() {}public Person(String name, String sex) {this.name name;this.sex sex;}public String getName() {return name;}public String getSex() {return…

鸿蒙Harmony4.0开发-ArkTS基础知识运用

概念 1.渲染控制语法: 条件渲染:使用if/else进行条件渲染。 Column() {if (this.count > 0) {Text(count is positive)} }循环渲染:开发框架提供循环渲染(ForEach组件)来迭代数组,并为每个数组项创建…

2023人物专访「中国新时代艺坛楷模」蓝弘艺术专题报道

蓝弘,名文珺,广东客家人。十六届人大代表,广州蓝弘艺术中心创办人,民建中央画院广东分院副院长,广东省美术家协会会员,广州江海地区书画家协会会长。 蓝弘画家被世界教科组织联合协会评为“世界艺术大使”…

【操作系统】快速做题向 优先权调度(抢占式/非抢占式)算法做题步骤分析

理论知识理解上面这几句话就行。 抢占,非抢占的区别就是,能不能直接中断某正在进行的优先级没我高的进程的运行。 非抢占只要某进程已经在运行了,后面不论出现多少优先级多高的进程,都得老老实实等待这个进程运行完毕&#xff0…

RuntimeError: Inference tensors do not track version counter.

问题&#xff1a; Testing DataLoader 0: 0%| | 0/78 [00:00<?, ?it/s]Failed to collect metadata on function, produced code may be suboptimal. Known situations this can occur are inference mode only compilation involving resize_ or prims (!sc…

NFC标签写入网址,NTAG213写入网址URL

NFC标签常用的有NTAG213,/215/216以及国产的F8123&#xff0c;可以写入网址&#xff0c;应用在产品身份识别&#xff0c;溯源&#xff0c;防伪等&#xff0c;我们使用NFC读写器ACR122u可以批量快速的写入网址URL 一、打开软件 二、把需要写的网址&#xff0c;整理到Excel表格中…

mysql中的数据类型和表操作【MYSQL】

mysql中的数据类型和表操作MYSQL】 一. 表结构操作1.1创建及删除表结构i. 创建表ii. 查看表结构iii. 删除表 1.2 修改表结构i. 修改表名ii. 添加新字段iii. 修改字段中的属性iiii. 删除字段 二. 表中类型2.1 int类型2.2 bit类型2.3 浮点类型i. float类型ii. decimal类型 2.4 字…

智能优化算法应用:基于黑寡妇算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于黑寡妇算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于黑寡妇算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.黑寡妇算法4.实验参数设定5.算法结果6.参考文…

LeetCode刷题--- 子集

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题【 http://t.csdnimg.cn/yUl2I 】【C】 【 http://t.csdnimg.cn/6AbpV 】数据结构与算法【 http://t.csdnimg.cn/hKh2l 】 前言&#xff1a;这个专栏主要讲…

【BEV感知】BEVFormer 融合多视角图形的空间特征和时序特征 ECCV 2022

前言 本文分享BEV感知方案中&#xff0c;具有代表性的方法&#xff1a;BEVFormer。 它基于Deformable Attention&#xff0c;实现了一种融合多视角相机空间特征和时序特征的端到端框架&#xff0c;适用于多种自动驾驶感知任务。 主要由3个关键模块组成&#xff1a; BEV Que…