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

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

参考文献:
华为云
博客园
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.mrgr.cn/news/11818.html

相关文章:

  • 苹果发布iOS 18 Beta 7更新:RC准正式版正在路上
  • 论文《Graph Structural Attack by Perturbing Spectral Distance》笔记
  • ReadAgent,一款具有要点记忆的人工智能阅读代理
  • 云知声多模态模型:实时多模态输入输出;独立于 Siri ,苹果或开发新 AI 用于机器人丨 RTE 开发者日报
  • 《黑神话·悟空》的编程语言探讨
  • Ant Design Vue修改表格样式
  • SpringMVC关于参数问题案例
  • MATLAB绘图基础1:MATLAB基础回顾
  • 金融系统中Java如何处理大量的交易和请求
  • OpenAI API VBA function returns #Value! but MsgBox displays response
  • min(n,k)*min(m,k)
  • Flask-RESTFul 之 RESTFul 的第一个案例
  • 数据库系统 第26节 数据库调优
  • 前端语句注意事项
  • 从0到1构建视频汇聚生态:EasyCVR视频汇聚平台流媒体协议支持的前瞻性布局
  • Clickhouse集群化(六)clickhosue-operator学习
  • 云渲染解决:笔记本渲染很伤电脑吗?如何保护你的电脑?
  • 主数据标准化的目的是什么
  • 10、Flink 动态表之动态表 连续查询(Continuous Query)详解
  • ByteBuffer详解