【算法套路】-【递归篇】【递归三要素】
【算法套路】-【递归篇】
文章目录
- 【算法套路】-【递归篇】
- 前言
- 递归三要素
前言
本文参考·【代码随想录】·大佬的二叉树:一入递归深似海,从此offer是路人,希望在写递归脑子糊涂的时候,给自己一点灵光。
递归三要素
三要素其实就是递归的模板,按照三要素来写递归就是递归的套路。
1、确定递归函数的参数和返回值
:确定递归过程中需要处理的参数,明确每次递归的返回值进而确定递归函数的返回类型
2、确定递归终止条件
,即函数return的出口:终止条件写的不对,操作系统的内存栈一定会溢出,毕竟递归也是有限制的
3、确定单层递归的逻辑
:明确每次递归要进行什么操作
以二叉树的前序遍历为例:
class Solution {public:void traversal(TreeNode* cur, vector<int>& vec) {//1:函数参数&返回值if (cur == NULL) return; //2:终止条件vec.push_back(cur->val); // 中 //3开始:单层递归逻辑traversal(cur->left, vec); // 左traversal(cur->right, vec); // 右 //3结束}vector<int> preorderTraversal(TreeNode* root) {vector<int> result;traversal(root, result);return result; }
};
具体题目中使用到递归时,很少能够直接使用本函数进行递归:preorderTraversal()
函数作为执行的主体函数,并不进行递归,而是将递归函数traversal()
写在外部。
因为前序遍历访问顺序是根-左-右
,单层逻辑就是顺序访问根-左-右
的节点,因此需要为形参cur
传入实参root
,并将节点值保存在vector中。递归的终止条件是当前节点为空时返回上一级节点,这种写法也是二叉树的遍历中最常用的一种写法。
【算法套路】-【递归篇】【递归三要素】相关推荐
- P5 周志华:“数据、算法、算力”,人工智能三要素在未来还要加上“知识”
周志华:"数据.算法.算力",人工智能三要素在未来还要加上"知识" 算法在获得了大量数据和算力的情况下,可能会爆发出极大的威力,但这需要高昂的成本,周志华教授认 ...
- 机器学习 · 总览篇 VI 三要素之策略-损失函数
上一篇文章介绍了机器学习三要素中的第一个要素-模型,模型部分限制了预测模型函数的假设空间.本文将要介绍的第二个要素-策略,策略部分就是要定量判断不同参数下模型的优劣,为第三步求解最优模型做基础.由于策 ...
- 周志华:“数据、算法、算力”,人工智能三要素在未来还要加上“知识”
点击蓝字 关注我们 作者丨李雨晨 来源丨AI科评论 2020 年 8 月 7 日,全球人工智能和机器人峰会(CCF-GAIR 2020)正式开幕.CCF-GAIR 2020 峰会由中国计算机学会(C ...
- 3、基础篇————信息安全三要素
无意中发现了一个巨牛巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,小白也能学,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈-我正在学习中,觉得太牛了,所以分享给大家 ...
- 算法总结——JS实现递归
目录 一.递归定义 百度百科 其他 二.循环与递归 三.几个经典题 斐波那契数 题目 基本思路 递归解法 动态规划解法 汉诺塔 题目 基本思路 一.递归定义 百度百科 递归,就是在运行的过程中调用自己 ...
- 机器学习三要素之数据、模型、算法
参考:https://gitbook.cn/gitchat/column/5ad70dea9a722231b25ddbf8/topic/5b1086eccad6fe44db4c1268 1. 机器学习 ...
- 《统计学习方法》(李航)第1章主要内容介绍(统计学习概述、分类、三要素)
PS:所写内容为本人读书笔记,如需看更详细内容请购买正版书籍. 第1章:统计学习及监督学习概论 1.1 统计学习概述 统计学习:是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测和分析的学 ...
- 人工智能算法数据挖掘第二篇
#博学谷IT学习技术支持# 分析过去 把握现在 预测未来 在茫茫的数据大海海底下有一望无际的信息沙漠,金灿灿的有价值的信息深埋其中等待人们去发现和挖掘 对数据敏感就是对有价值信息的敏感 培养数据 ...
- 递归_三要素_基础算法必备
递归_三要素_基础算法必备 目录 第一要素:明确函数作用 第二要素:递归结束条件 第三要素:函数等价关系 第一要素:明确函数作用 对于递归,我觉得很重要的一个事就是,这个函数的功能是什么,他要完成什么 ...
最新文章
- hive 列转行_掌握这个SQL技巧超越80%的人——行转列/列转行
- webApp之meta标签
- 用户选择屏幕搜索帮助的代码实现
- 在Bootstrap中使用类的按钮类型
- MyBatis学习总结(4)——解决字段名与实体类属性名不相同的冲突
- [转]学习object-c,补习一下指针
- 任何时间都是送给我们的最好礼物
- 【医疗影像处理】dcm2niix python3 使用
- 推荐使用maven生成mybatis代码
- 使用axure9绘制三级导航
- 淘特,阿里在下沉市场的一把好刀
- 编码器SRT协议三种模式(listener, caller, rendezvous)简介
- Anker—学习成长笔记
- 二分图匹配Hopcroft-Carp算法介绍
- 省对应的市区经纬度信息
- 量化选股 聚宽学习获取财务数据
- BSP-充电名词解释
- python中科学计数法怎么表示_python科学计数法转换
- 计算机专业考中山大学经济学,2020中山大学801经济学考崩经验教训
- 计算机工程在铁路上能做什么,值得推荐的4个“交通”专业,毕业后直接进入铁路系统,工作不愁...
热门文章
- 技术干货| MindSpore新一代自主研发分子模拟库:Mind-Sponge
- Python最抢手、Java最流行、Go最有前途,7000位程序员揭秘2019软件开发现状
- Zabbix-Sender 增加自定义监控项-- Ping 到目的地链路监控--bat脚本循环运行
- 局域网设置共享文件夹及常见问题解决办法
- NLP 中文分词-双向匹配算法(理论+Python实现)
- 密码与安全新技术专题
- 戴尔刀片服务器型号在哪里,戴尔 PowerEdge M640 刀片式服务器:服务器 | Dell 中国大陆...
- 把json数据导入linux,使用json文件给es中导入数据
- Google Guava 的 5 个鲜为人知的特性
- 使用梯度上升法求解 PCA 问题