美文网首页
递归简述

递归简述

作者: 半路和尚怎么出家 | 来源:发表于2018-11-14 22:19 被阅读0次
数组求和

如上图为求解一个int数组中所有元素的和,此处是可以用一重循环解决,只是为了更直观简单的说明什么是递归,所以才以此为例。

一个递归函数应包含最基本的两部分:

1.求解初最基本问题(递归终止条件)

      **即当问题被拆分为最小时,应该如何处理**

2.将原问题转化为更小的问题

书写递归函数时,不应该被函数的自我调用逻辑所迷惑,应该注重当前函数所需要解决的问题,自我调用只是解决问题的一个步骤(可以理解为只是调用了一个子过程,子过程结束后返回相应结果,然后主过程继续运行)

链表删除节点

上图为利用递归函数,解决leetcode中删除头结点为head的链表中值为val的节点,非常简洁!

下图为未使用递归函数的解(代码量上升,且逻辑复杂):


image.png

递归的代价

递归的代价

如上面列举的“数组求和”及“链表删除节点”,当数组元素足够多,或者链表节点足够多时,那么栈内存将会溢出~
并且递归调用函数实际也是会消耗更多的时间。

递归在处理线性问题时确实不具备优势,但是用递归处理树形结构数据时,将会是非常适合的,后续章节,我将记录利用递归思想处理树形数据结构

相关文章

  • 递归简述

    如上图为求解一个int数组中所有元素的和,此处是可以用一重循环解决,只是为了更直观简单的说明什么是递归,所以才以此...

  • 递归简述

    方法的递归调用: 方法自己调用自己的方法! 一般要进行递归操作 ,特点 方法必须有一个递归的结束调教 方法在每次...

  • python中yaml配置文件模块的使用

    简述 和GNU一样,YAML是一个递归着说“不”的名字。不同的是,GNU对UNIX说不,YAML说不的对象是XML...

  • 二叉树遍历

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

  • 二叉树的遍历

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

  • 二叉树的前序、中序、后序遍历(递归、非递归)

    二叉树 前序 递归: 非递归: 中序 递归: 非递归: 层序 递归: 非递归:

  • 树的遍历,golang实现

    先序,递归 中序,递归 后序,递归 先序,非递归 中序,非递归 后序,非递归 层序遍历

  • 3 递归(19)(方法层面的高级循环)

    递归 树的递归 其它递归

  • 递归,递归,递归

    在我告诉你什么是递归之前,你应该读一下这篇文章:递归,递归,递归。 如果你没有这么做,那么表扬一下自己。如果你那么...

  • 数据结构-树的遍历

    1. 先序遍历 递归实现 非递归实现 2. 中序遍历 递归实现 非递归实现 3. 后序遍历 递归实现 非递归实现 ...

网友评论

      本文标题:递归简述

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