美文网首页
[AlgoGo]递归

[AlgoGo]递归

作者: 周瑞不是同端 | 来源:发表于2020-09-22 21:16 被阅读0次

什么是递归?

递归就是自己调用自己。

什么样的问题可以用递归来解决?

  1. 一个问题的解可以分为几个规模更小的子问题的解。
  2. 分解后的子问题除了规模更小,解决思路完全相同。
  3. 存在递归终止条件。
    同时满足上述3个条件的问题可以用递归解决。

如何写出递归代码?

递推公式 + 递归终止条件

递归需要注意哪些问题?

堆栈溢出:函数反复压栈导致堆栈溢出
解决方案:限制最大递归层数,超过最大层数抛出异常。

重复计算:子问题求解过程重复计算
解决方案:记录求解结果,判断子问题是否已求解。

所有递归代码均可以转换为非递归的实现(使用循环手动模拟压栈)

相关文章

  • [AlgoGo]递归

    什么是递归? 递归就是自己调用自己。 什么样的问题可以用递归来解决? 一个问题的解可以分为几个规模更小的子问题的解...

  • [AlgoGo]堆

    堆的定义 完全二叉树 每个节点大于等于子节点 堆的实现 存储方式堆是一个完全二叉树,完全二叉树适合时候数组存储,因...

  • [AlgoGo]排序算法

    如何分析一个排序算法? 执行效率 最好、最坏、平均时间复杂度 最先需要考虑就是这三种时间复杂度,反应了算法随着问题...

  • [AlgoGo]跳表SkipList

    跳表是什么 跳表的实现基于链表,弥补了链表不便于查找的缺点,所以跳表其实不是表(table)而是链(list)。跳...

  • [AlgoGo]散列表

    什么是散列表 散列表的本质是数组,利用了数组随机存取的特点,在存储位置的选择上用了哈希函数来寻找元素对应位置。哈希...

  • 二叉树遍历

    先序遍历——[递归、非递归] 中序遍历——[递归、非递归] 后序遍历——[递归、非递归] 层次遍历——[递归、非递归]

  • 二叉树的遍历

    先序递归: 非递归: 中序递归: 非递归: 后序递归: 非递归 层次遍历

  • [AlgoGo]二分查找

    二分查找算法用在有序的数据集合中查找目标数据,时间复杂度为O(logn),但限制条件较多。 二分查找的限制 二分查...

  • [AlgoGo]线性存储结构-数组

    定义 数组(Array):一种线性表数据结构,使用连续内存空间存储相同数据类型的一组数据。线性表:线性结构,只有前...

  • [AlgoGo]复杂度分析

    针对解决相同问题的一系列算法,如何评价他们的优劣?如何评估哪些算法能够满足业务场景的要求?算法复杂度提供了一个度量...

网友评论

      本文标题:[AlgoGo]递归

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