美文网首页
数据结构与算法(第二季):递归、回溯

数据结构与算法(第二季):递归、回溯

作者: 萧1帅 | 来源:发表于2022-01-14 15:27 被阅读0次

递归(Recursion)

一、概念

  • 函数(方法)直接或间接调用自身。
image

二、递归现象

image

三、函数的递归调用过程

  • 如下一段函数调用:
image
  • 实际在栈中的调用过程:
image image
  • 如果递归调用没有终止,将会一直消耗栈空间,最终导致栈内存溢出(Stack Overflow),所以要明确一个结束的递归条件,也叫做边界条件

四、实例分析

  • 1+2+3+...+ (n-1)+n的和,(n>0)
image
  • 如果将递归转化为非递归函数,那么通常复杂度会得到优化
image
  • 使用递归不一定是为了获得最优解,而是为了简化解决问题的思路,代码会更简洁。

五、递归的基本思想

  • 拆解问题
    • 把规模大的问题变成规模较小的同类型问题。
    • 规模较小的问题又不断变成规模更小的问题。
    • 规模小到一定程度可以直接得出它的解。
image
  • 求解
    • 由最小规模问题的解得出较大规模问题的解。
    • 由较大规模问题的解不断得出规模更大问题的解。

六、递归的使用套路

  1. 明确函数的功能,先不要思考代码怎么写,而是搞清楚这个函数的作用。
  2. 明确原问题与子问题的关系,即寻找f(n)与f(n-1)的关系。n + sum(n-1)
  3. 明确边界条件,相当于思考问题规模小到什么程度可以直接得出解。(n<=1)
image

七、练习

image image
  • 此种方法会超时,所以需要优化。
image

相关文章

  • 递归2-回溯与递归

    I. 回溯算法基础 回溯与递归的区别和联系  很多人不理解回溯与递归到底是什么关系。其实很简单,回溯算法是一种算法...

  • 8.30 leetcode刷题(2)

    递归和回溯:17 电话号码 思路:运用递归去实现回溯算法的思想。回溯算法本质上是一种暴力搜索,通过递归调用去实现,...

  • 二叉树算法之0-计算二叉树的深度

    算法思想:使用递归 算法解析:分别递归左树和右树,递归到叶子节点时返回0,递归回溯时值+1,不断累积回溯的深度,每...

  • 递归、迭代、回溯、广度和深度优先

    在学习算法的时候,经常碰到递归、迭代、回溯、广度优先和深度优先算法,可是回溯使用了递归,深度优先也使用了递归,广度...

  • 数据结构与算法(第二季):递归、回溯

    递归(Recursion) 一、概念 函数(方法)直接或间接调用自身。 二、递归现象 三、函数的递归调用过程 如下...

  • 数据结构与算法之 递归与回溯算法

    概念 简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代...

  • 高级算法设计与分析

    目录 算法基础 算法复杂性 递归与分治 回溯法与分支限界法 贪心算法 动态规划法 NP问题 概率算法 现代优化算法...

  • 走迷宫算法(C回溯递归)

    引言 迷宫算法在很多场景都非常实用,比如游戏中的机器人等。而且高级的迷宫算法与回溯、递归也是息息相关的。而且回溯的...

  • 数据结构与算法简述(下)

    目录: 算法简介 排序算法 递归与穷举 贪心与分治 动态规划和回溯 1.算法简介 解题方案的准确而完整的描述,是一...

  • 回溯递归算法

    回溯大法严重依赖【递归】 1、求子集 78. 子集[https://leetcode-cn.com/problem...

网友评论

      本文标题:数据结构与算法(第二季):递归、回溯

      本文链接:https://www.haomeiwen.com/subject/uliacrtx.html