【栈与递归】-------简单了解

news2024/12/29 5:13:28

1.递归的定义:

  • 一个对象部分地包含它自己或用它自己给自己定义,则称这个对象是递归的

例如: 链表的结构树的结构等等

  • 若一个过程直接地或间接地调用自己, 则称这个过程是递归的过程

例如:递归求n的阶乘
在这里插入图片描述

2.以下三种情况常常用到递归方法:

2.1递归定义的数学函数:

在这里插入图片描述

2.2具有递归特性的数据结构:

在这里插入图片描述

2.3可递归求解的问题:

在这里插入图片描述

3.递归问题------用分治法求解

在这里插入图片描述
必备的三个条件:

  • 1.能将一个问题转变成一个新问题,而新问题与原问题的解法相同或类同不同的仅是处理的对象,且这些处理对象是变化有规律的
  • 2.可以通过上述转化而使问题简化
  • 3.必须有一个明确的递归出口,或称递归的边界

3.1分治法求解递归问题算法的一般形式:

在这里插入图片描述

4.函数的调用过程:

在这里插入图片描述
在这里插入图片描述

4.1以函数的嵌套调用来分析:

在这里插入图片描述

4.2通过模拟求解4的阶乘的过程来分析:

在这里插入图片描述
在这里插入图片描述

5.递归的优缺点:

  • 优点:结构清晰,程序易读
  • 缺点:每次调用要生成工作记录保存状态信息入栈;
    返回时要出栈恢复状态信息时间开销大。

所以有将递归转换成非递归的两种形式:
在这里插入图片描述

5.1尾递归 转换为 循环结构

尾递归:即只有一次递归操作的函数

比如求n的阶乘:
在这里插入图片描述

5.2单向递归 转换为 循环结构

单向递归:虽然有一处以上的递归调用语句但各次递归调用语句的参数只和主调函数有关,相互之间参数无关,并且这些递归调用语句处于算法的最后

比如斐波那契数列:
在这里插入图片描述

5.3借助栈改写递归(了解即可)

特点与缺陷:
在这里插入图片描述
相关操作步骤:
在这里插入图片描述

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

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

相关文章

不确定性环境下的自动驾驶汽车行为决策方法

在高度交互的复杂驾驶环境中考虑不确定性因素的影响,做出合理的决策,是当前决策规划系统须解决的主要问题之一。本文提出了一种不确定性环境下的自动驾驶汽车行为决策方法,为消除不确定性的影响,将行为决策过程转化为部分可观察马…

如何使用ssm实现基于jsp的快递管理系统的开发

TOC ssm226基于jsp的快递管理系统的开发jsp 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化,规…

达梦数据库的系统视图v$db_object_cache

达梦数据库的系统视图v$db_object_cache 达梦数据库(DM Database)中的 V$DB_OBJECT_CACHE 视图提供了数据库对象缓存的相关信息。这些信息包括缓存中的各种数据库对象(如表、索引、存储过程等)的具体状态和属性。通过 V$DB_OBJEC…

基于SpringBoot的滴答拍摄影项目

你好,我是计算机专业的学生,专注于摄影项目的开发与实现。如果您对我的项目感兴趣或有任何建议,欢迎随时联系我。 开发语言 Java 数据库 MySQL 技术 SpringBoot框架 工具 MyEclipse、Tomcat服务器 系统展示 首页 管理员功能模块 用…

网络安全-安全渗透简介和安全渗透环境准备

文章目录 前言1. 安全渗透简介1.1 什么是安全渗透?1.2 安全渗透所需的工具1.3 渗透测试流程 2. 使用 Kali Linux 进行安全渗透2.1 下载ISO镜像2.2 下载VMware Workstaion软件2.3 Kali Linux简介2.4 准备Kali Linux环境2.5 Kali Linux初始配置2.6 VIM鼠标右键无法粘贴…

石碑文字全排列重组(华为od机考题)

一、题目 1.原题 有一个考古学家发现一个石碑, 但是很可惜,发现时其已经断成多段, 原地发现n个断口整齐的石碑碎片。 为了破解石碑内容, 考古学家希望有程序能帮忙计算复原后的石碑文字组合数, 你能帮忙吗&#xff1…

C# 三种定时器的用法

目录 1.System.Timers.Timer 2.System.Windows.Forms.Timer 3.System.Threading.Timer 4.简单的封装 这里介绍三种常用的定时器,方便查阅资料或直接复制使用。 1.System.Timers.Timer System.Timers.Timer 类定义了一个计时器,该计时器按固定间隔触…

大二必做项目贪吃蛇超详解之上篇win32库介绍

文章目录 1. 游戏背景2. 游戏效果演示3. 项目目标4. 前置知识5. Win32 API5. 1 控制台程序(Console)5. 2 控制台屏幕上的坐标 COORD5. 3 GetStdHandle5. 4 GetConsoleCursorlnfo5. 4. 1 CONSOLE_CURSOR_INFO5. 4. 2 SetConsoleCursorlnfo 5. 5 SetconsoleCursorPosition5. 6 Ge…

“汤姆猫除了不会捉杰瑞啥都会”之作为Web服务器,tomcat的常用部署方式 (Tomcat+memcached实现高可用)

目录 企业级WEB应用服务器TOMCAT一、tomcat的功能介绍1.1 安装 Tomcat1.2 tomcat的文件结构和组成1.3 生成tomcat的启动文件 二、结合反向代理实现tomcat部署2.1 常见部署方式介绍2.2 利用 nginx 反向代理实现2.3 实现tomcat中的负载均衡2.3.1 HTTP的无状态,有连接和…

Linux驱动学习之中断与等待队列

本篇分为设备树部分和API接口部分 设备树 想要使用中断,设备树中需要有两个属性: interrupts // 表示要使用哪一个中断, 中断的触发类型等等。 interrupt-parent // 这个中断要接到哪一个设备去? 即父中断控制器是谁 父中…

一种更快成像的新技术

斯旺西大学(Swansea University)的研究人员为中性原子束显微镜创造了一种新的成像方法,可大大加快显微镜图像的获取速度。中性原子束显微镜已成为科学研究的一个重点,因为它能够对商用显微镜无法成像的表面进行成像,例…

mysql集群从零开始搭建

文章目录 MySQL集群linux下部署mysqlmysql主从复制master配置配置slave新的slave加入延迟复制慢查询多线程原理 半同步模式原理gat模式启动半同步模式 mysql高可用之组复制(MGR)实现mysql组复制 mysql路由具体实现 mysql高可用之MHAMHA部署实施安装MHA软…

Codeforces Round 968 (Div. 2 ABCD1D2题) 视频讲解

A. Turtle and Good Strings Problem Statement Turtle thinks a string s s s is a good string if there exists a sequence of strings t 1 , t 2 , … , t k t_1, t_2, \ldots, t_k t1​,t2​,…,tk​ ( k k k is an arbitrary integer) such that: k ≥ 2 k \ge 2 k≥…

接口自动化测试利器,使用Rest Assured进行REST API测试

我们在做接口测试时,一般在代码中会使用HttpClient,但是HttpClient相对来讲还是比较麻烦的,代码量也相对较多,对于新手而言上手会比较难一点,今天我们来看下另一个接口测试工具包REST Assured REST Assured是一个流行…

Blazor官方文档学习记录

Blazor官方文档学习记录 1 官方文档2 Blazor教程-生成首个应用3 项目结构4 基础知识4.1 生态4.2 Razor组件指令顺序4.3 Razor组件的初始化方法 5 注意 1 官方文档 https://dotnet.microsoft.com/zh-cn/apps/aspnet/web-apps/blazor2 Blazor教程-生成首个应用 https://dotnet.…

Python | Linux | 解析Himawari-8/9 | Standard Data

写作前面 之前一个相关的工作需要解析Himawari-8/9 Standard Data文件,因为他是二进制的,之前没有处理过,导致完全摸不着头脑。在网上找了中英文搜索找了好久,虽然也找到了公开的解析代码,但是放在自己的数据这感觉总是…

趣味算法------猴子吃桃(循环,递归双重解法)

题目描述 猴子第一天摘下若干个桃子,当天吃了一半,后面又多吃一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。后面每天猴子都吃了前一天剩下的一半零一个。到第十天想再吃时,只剩下一个桃子。求第一天共摘了多少桃子。 …

鸿蒙(API 12 Beta3版)【获取音视频元数据】音频播放与录制

使用AVMetadataExtractor可以实现从原始媒体资源中获取元数据,本开发指导将以获取一个音频资源的元数据作为示例,向开发者讲解AVMetadataExtractor元数据相关功能。视频资源的元数据获取流程与音频类似,由于视频没有专辑封面,所以…

【中仕公考怎么样】公务员备考小建议

2025年国考在即,掌握正确的备考方法很重要!中仕为大家简单分享4点小技巧。 1. 在提升行测分数时,可以采用大量的练习题、整理题以及关注往年核心考点的方式。无论处于准备过程的哪一阶段,对各类题型进行深入分析并掌握相应的解题…

C++ | Leetcode C++题解之第373题查找和最小的K对数字

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<vector<int>> kSmallestPairs(vector<int>& nums1, vector<int>& nums2, int k) {int m nums1.size();int n nums2.size();auto count [&](int target){long long …