递归的理解(数据结构)
在数据结构中,很多内容都应用到递归,递归在数据结构中至关重要
链接
递归定义:一个函数、概念或数学结构,如果在其定义或说明内部直接或间接地出现对其本身的引用,或者是为了描述问题的某一状态,必须要用至它的上一状态,而描述上一状态,又必须用到它的上一状态……这种用自己来定义自己的方法,称之为递归或递归定义。在程序设计中,函数直接或间接调用自己,就被称为递归调用。
递归的几个特点
1.递归式,就是如何将原问题划分成子问题。
2.递归出口,递归终止的条件,即最小子问题的求解,可以允许多个出口。
3.界函数,问题规模变化的函数,它保证递归的规模向出口条件靠拢
递归算法基本设计套路:
1、分析问题, 设计递归公式或者算法步骤将一个问题化解为一个或多个子问题求解, 且子问题和原问题具有相同的解法,然后合并各个子问题成原始问题的解。
2、设计递归结束条件控制递归,递归最后一级的调用必须不能再进行递归。保证算法的有穷性。
3、确定参数,设计递归函数递归过程或递归函数的参数值在递归过程中必须是按规律变化的,且参数值的增或减方向应与递归终止条件相匹配, 这样才能控制递归调用。
一般简单递归函数设计的格式为:
if ( 递归结束条件)return ( 结束递归时的返回值);
elsereturn ( 递归表达式);
递归算法的基本模式 (用于求解问题)
//递归算法的框架:f(n){ n=1:f(1) … (直接求解);n>1:(递归)求解f(k)…(k<n)//并利用f(1)、…、f(n-1)求得f(n)…;}
注:一般来说,求f(k)(k<n)比求f(n)要容易,
关键在于要有办法由f(1)、…、f(n-1)得到f(n) 。归纳原理进行判断。
递归的理解(数据结构)相关推荐
- 看图轻松理解数据结构与算法系列(合并排序)
前言 推出一个新系列,<看图轻松理解数据结构和算法>,主要使用图片来描述常见的数据结构和算法,轻松阅读并理解掌握.本系列包括各种堆.各种队列.各种列表.各种树.各种图.各种排序等等几十篇的 ...
- 看图轻松理解数据结构与算法系列(2-3树)
前言 推出一个新系列,<看图轻松理解数据结构和算法>,主要使用图片来描述常见的数据结构和算法,轻松阅读并理解掌握.本系列包括各种堆.各种队列.各种列表.各种树.各种图.各种排序等等几十篇的 ...
- 二、考研数据结构笔记——绪论(理解数据结构,算法,时间复杂度计算做题技巧)
一.数据结构基本概念 1.数据:数据是信息的载体.客观事物的一种表现形式.万事万物都能用数据表示出来. 2.数据元素:数据元素是数据的基本单位,一个数据元素有若干个数据项组成 3.数据项:构成数据元素 ...
- C语言递归的理解与应用
函数-递归 文章目录 前言 一.什么是递归? 二.案例-递归的应用 1.场景1-规律性强 2.场景2-大型复杂问题 三.总结 前言 在初学C语言函数章节时,相信很多小伙伴对于递归难以理解,那么今天就让 ...
- 深入理解数据结构和算法
hi,大家好,我是阿荣,今天分享一些对数据结构和算法精华总结,希望对大家的面试或者工作有一定的帮助: 看完本文可以学到什么 知道哪些数据结构和算法在实际工作中最常用,最重要 理解一些设计上注意事项(经 ...
- 对递归的理解以及怎么写递归程序
一.怎么写递归 1.一定要搞清楚当前你的递归程序的功能是什么,以及需不需要返回值,如果需要,则返回的值是什么,如果对当前递归程序要完成的功能模棱两可.一知半解,那么逻辑肯定混乱,也就不容易写出正确的递 ...
- 深入理解数据结构之链表
[本专题会对常见的数据结构及相应算法进行分析与总结,并会在每个系列的博文中提供几道相关的一线互联网企业面试/笔试题来巩固所学及帮助我们查漏补缺.项目地址:https://github.com/absf ...
- python递归汉诺塔详解_汉诺塔在python中递归,理解磁盘目的地的变化
我正在努力提高我对python中hanoi之塔递归解决方案代码的理解. 此代码:def moveTower(height,fromPole, toPole, withPole): if height ...
- [转载] Python 递归 深入理解递归 Python递归剖析,绝对让你看懂!
参考链接: Python | print()中的结束参数 目录 递归剖析 递归的两个过程 return 返回值 详解 递归思路二分法和递归尾递归递归练习题 递归剖析 递归真的很重要,之前学的时候,学的 ...
最新文章
- 关于移动端架构的好的学习网站
- 在当前进程下取得当前登陆用户
- Docker源码分析(八):Docker Container网络(下)
- 【bzoj1911】 Apio2010—特别行动队
- centOs 7.2*64 ECS nginx安装教程
- 【UVA 437】The Tower of Babylon(拓扑排序+DP,做法)
- 高级软件工程第四次作业:两只小熊队团队作业
- layui设置radio
- oracle 网络访问配置tnsnames.ora文件的路径
- dubbo源码解析-spi(一)
- 60套漂亮的的免费 PSD 界面设计元素包资源(系列二)
- c/c++中与字符串处理相关的函数
- 讲讲电感器的结构、分类及特性!
- 二阶魔方万能还原公式_二阶魔方复原公式
- 3.cesium雨、雪、雾天气场景效果
- IDAPython 让你的生活更滋润 part1 and part2
- 一键圣诞帽 html5源码,HTML5在线教程之微信小程序“圣诞帽”的实现思路详解
- sn0int - 半自动化 OSINT 框架和包管理器
- Python Tkinter——数字拼图游戏
- 图像灰度直方图匹配(直方图规定化,Histogram Matching)实验