数据结构-递归算法-第四天

news/2024/9/18 14:50:10/ 标签: 数据结构, 算法

参考文献:
华为云
博客园
labuladong 的算法笔记
递归是一种编程技巧,一种解决问题的思维方式;分治算法和动态规划很大程度上是递归思想基础上的(虽然动态规划的最终版本大都不是递归了,但解题思想还是离不开递归),解决更具体问题的两类算法思想;贪心算法是动态规划算法的一个子集,可以更高效解决一部分更特殊的问题。

在数学与计算机科学中,递归 (Recursion)是指在函数的定义中使用函数自身的方法。直观上来看,就是某个函数自己调用自己。简而言之,递归的基本思想就是把规模大的问题转化为规模小的相同的子问题来解决。
递归的思维,逼迫我们倒着思考,看到问题的尽头,把解决问题的过程看做过去时。
递归算法的核心在于两个基本组成部分:递归主体和终止条件。

解决递归问题一般就三步曲,分别是:
第一步,定义函数功能
第二步,寻找递归终止条件
第二步,递推函数的等价关系式

对于递归主体,一般有两种形式:递推公式和递推关系。

对于一些数学逻辑关系明显,能用公式表达的问题,可采用递推公式。
对于一些不易用公式表达的问题,要尽量发掘问题中的逻辑,用递推关系表示。

如计算阶乘,Fibonacci数列。

已知Fibonacci数列为:1、1、2、3、5、8…,求Fibonacci数列的第n个数是多少?

递推公式已经得到:F(n)=F(n-1)+F(n-2);
终止条件就是:F(1)=F(2)=1。

//Fibonacci数列函数 
int Fibonacci(int n) {if(n==1||n==2)return 1;elsereturn Fibonacci(n-1)+Fibonacci(n-2);
}

具体题目例子:
在这里插入图片描述

leetcode题解


http://www.ppmy.cn/news/1517090.html

相关文章

Linux环境使用docker搭建Navidrome本地个人音乐库并实现远程访问

文章目录 前言1. 安装Docker2. Docker镜像源添加方法3. 创建并启动Navidrome容器 前言 本文和大家分享一款目前在G站有11KStar的开源跨平台音乐服务器Navidrome,如何在Linux环境本地使用Docker部署,并结合cpolar内网穿透工具配置公网地址,实…

入门STM32--按键输入

上一篇博客我们介绍了如何使用GPIO配置跑马灯,根据GPIO的基本结构图,我们能够发现,他肯定不单单有输出的功能,肯定可以检测IO上的电平变化,实际上就是输入的功能。 1.按键 在大多数情况下,按键是一种简单的…

今日算法:蓝桥杯基础题之“切面条”

你好同学,我是沐爸,欢迎点赞、收藏、评论和关注!个人知乎 从今天开始,一起了解算法,每日一题,从 JavScript 的技术角度进行解答,如果你对算法也感兴趣,请多多关注哦。 问题描述 一…

15 - FFmpeg 音频混音(过滤器)

过滤器链接流程 -------- auto_aresample_0:default--[48000Hz flt:stereo]--input0| amix |default--[48000Hz flt:stereo]--auto_aresample_2:default auto_aresample_1:default--[48000Hz flt:stereo]--input1| (amix) | …

Linux 数据结构 顺序表 链表

数据结构: 1.衡量一个程序是否优秀: 1.时间复杂度: 数据量增长与程序运行时间的比例关系以函数描述称为时间渐进复杂度函数,简称时间复杂度 O(c) > O(logn) > O(n) > O(nlogn) > O(n^2) > O(n^3) > O…

一个prolog最简单推理示例

假设现在知道一些年轻人,谁喜欢谁,定义为love(x, y); 定义了一些这样的关系; 如果x喜欢y,y也喜欢x,则定义他们是一对情侣; 规则表示为: lovers(X,Y) :- love(X,Y), love(Y,X). 输入…

UniApp中的Flex布局技巧

随着移动互联网的迅速发展,越来越多的开发者开始使用跨平台技术来开发应用程序。而在跨平台开发里,uniapp是一种非常受欢迎的框架,由于使用uniapp可以快速地开发出同时支持多个平台的应用程序。在uniapp开发中,flex布局是一种非常…

【C++】异常 详解

目录 异常的引出与简介 异常的使用 异常逻辑图解 异常继承体系 异常的重新抛出 异常安全 异常规范 结语 异常的引出与简介 我们可以回忆一下,在C语言时期,我们返回错误的方式只有两个 一个是assert强制返回错误,还有一个就是返回错误…

第三十一章:docker如何部署Nexus

docker如何部署Nexus 目标 掌握 Nexus docker compose安装安装Docker和Docker Compose:确保您的系统已安装Docker和Docker Compose。如果尚未安装,可以参考Docker官方文档进行安装12。 创建Docker Compose文件:在您选择的目录下创建一个名为docker-compose.yml的新文件,并…

GraphRAG论文解读

欢迎一起讨论 论文地址综述介绍部分核心翻译翻译解释重要的信息元素和实体的关系(包含和被包含,而非相等)Graph Index(图索引)Community Detection(社区检测)Query-Focused Summarization&#…

Android studio 升级问题记录-个性化配置迁移

前言 在本次折腾Android studio更新的过程中,遇到了很多问题,包括: 选择直接覆盖更新的话,会发现样式还是老样式旧项目运行不通过,并且会生成一些异常的build无法再支持代码自动补全功能本地没commit的代码丢失&…

【经验】linux下cuda的更换

linux下cuda的更换 查看当前cuda和cudnn的版本 nvcc -Vcudnn版本 cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2下载对应版本的cuda 查看驱动版本535.54.03 下载对应的cuda版本 版本查看https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.htm…

pytest参数化多种用法总结

pytest.mark.parametrize 是 pytest 的一个核心功能,它允许你参数化测试函数,这样你就可以使用不同的参数运行同一个测试函数多次。以下是 pytest.mark.parametrize 的详细用法总结: 基本用法 parametrize 装饰器可以接受一个或多个参数名&…

驱动:mknod-misc 杂项自动

一、杂项设备驱动 #include <linux/init.h> #include <linux/kernel.h> #include <linux/fs.h> #include <linux/module.h> #include <linux/device.h> #include <asm/io.h> #include <asm/string.h> #include <asm/uaccess.h>…

TinaSDKV2.0 自定义系统开发

TinaSDKV2.0 自定义系统开发 什么是自定义系统&#xff1f; TinaSDK Kconfig界面配置 Tina Linux采用 Kconfig 机制对 SDK 和内核进行配置。 Kconfig 是一种固定格式的配置文件。Linux 编译环境中的 menuconfig 程序可以识别这种格式的配置文件&#xff0c;并提取出有效信息…

电脑丢失dll文件一键修复之dll确实损坏影响电脑运行

在使用电脑过程中&#xff0c;DLL文件丢失或损坏是一个常见的问题&#xff0c;它可能导致程序无法正常运行&#xff0c;甚至影响整个系统的稳定性。本文将详细介绍如何一键修复丢失的DLL文件&#xff0c;探讨常见的DLL丢失报错原因&#xff0c;并提供详细的修复步骤和预防措施。…

【mysql】mysql之数据操作语言(insert、delete、update)

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

《机器学习》—— OpenCV 对图片的各种操作(均值、方框、高斯、中值滤波处理)

文章目录 1、对有椒盐噪声的图片进行均值、方框、高斯、中值滤波处理2、给图像边缘增加边框3、对图片进行阈值化操作 1、对有椒盐噪声的图片进行均值、方框、高斯、中值滤波处理 均值滤波 cv2.blur是 OpenCV 库中的一个函数&#xff0c;用于对图像进行均值模糊处理。这个函数通…

幂等性简介

幂等性&#xff08;Idempotence&#xff09;是计算机科学中的一个重要概念&#xff0c;特别是在分布式系统和网络服务中。幂等性操作的特点是&#xff0c;无论执行多少次&#xff0c;结果都是相同的。换句话说&#xff0c;幂等性操作在多次执行后&#xff0c;对系统的状态不会产…

pycharm中opencv-python和opencv-contrib安装

1.去到https://pypi.org/中查找opencv-python 和opencv-contrib-python 2.分别下载。 3.下载完后&#xff0c;打开pycharm&#xff0c;然后新建一个项目&#xff0c;设置项目配置环境为当前python环境&#xff0c; 4.打开pycharm提供的控制台&#xff0c;使用pip install 安装文…