美文网首页
递归函数的调用深度理解

递归函数的调用深度理解

作者: TanzeyTang | 来源:发表于2020-02-14 13:02 被阅读0次

学过函数后基本上不久就会接触到递归,对于刚接触递归或者没有很深入理解递归的时候对递归的调用是模糊的,是含混不清且自以为已经懂了的,但是遇到自己需要用到递归或者看到别人的递归的时候理解起来可能就没有那么轻松了,所有深度理解递归还是很有必要的。

要理解递归函数根本在于要理解递归函数的调用,画图有助于我们理解,以二叉树的中序遍历为例,我们来画图理解这个递归的调用顺序:

先看看下面这个中序遍历的代码:

void inorder(){

       recr(root);

}

Void recr(Node r){

       If(r == null)

              Return;

       Recr(r.left);

       System.out.println(r.key);

       Recr(r.right);

}

上面的函数省略了节点类和树类的部分,节点还是和普通的二叉树一样有key,和right,left节点,树类里有根节点和节点类;

不难看出首先我们会从根节点开始将recr(10)压入堆栈,接着是recr(10.left==8),recr(8.left==5),直到recr(5.left==null)我们不会有函数压入堆栈,因此到此执行println(5);

然后recr(5.right)会调用一下,因为也是空,所以不会入栈,因此pop完5的部分,再继续pop函数栈里的8的部分,先看8的left已经pop了,再打印8,再打印8.right==9,以此类推,这是很简单的函数递归的调用,但是有时候理解起来也确实费劲,画图是个好办法。

相关文章

  • 递归函数的调用深度理解

    学过函数后基本上不久就会接触到递归,对于刚接触递归或者没有很深入理解递归的时候对递归的调用是模糊的,是含混不清且自...

  • 复习笔记之函数进阶(2)

    递归 如果一个函数在内部可以调用其本身,那么这个函数就是递归函数简单理解:函数内部自己调用自己就是递归函数(递归函...

  • c++ day03

    函数的原型声明 理解函数参数的传值 哥德巴赫猜想验证 函数引用调用示例 函数的嵌套调用 函数递归 递归就是自己调用...

  • 2.1 最基础的“穷竭搜索”

    递归函数 栈 队列 深度优先搜索 宽度优先搜索 2.1.1 递归函数 在一个函数中再次调用该函数本身的行为叫做递归...

  • 13_Python递归函数_全栈开发学习笔记

    1. 初识递归 什么是递归:在函数中调用自身函数最大递归深度默认是997/998 —— 是python从内存角度出...

  • 最基本的递归组装树

    !!!!! 1.递归自调用理解的核心1-----大函数与小函数的同名变量互不影响 2.递归自调用理解的核心2---...

  • 2 javascript

    浏览器窗口,屏幕大小 this指向 this最终指向调用他的对象 深度克隆 递归函数 在函数中调用自己functi...

  • 029_wz_hm_函数的递归

    函数的递归 函数调用自身的编程技巧成为递归 递归函数的特点 特点: 一个函数内部调用自己 函数内部可以调用其他函数...

  • [每天进步一点点~] 递归与闭包

    1.递归 【定义】:在自己函数的内部调用自己(自己调用自己) (函数自调用) 。递归函数 简单举例?: 阶乘的递归...

  • 递归调用

    什么是递归调用 递归调用就是在本函数中连续不断地对自身函数进行调用。 递归调用注意点 递归调用函数要有明确的某一或...

网友评论

      本文标题:递归函数的调用深度理解

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