前言:
有很多复杂算法都包含了递归算法,特别是关于树形数据结构遍历的情景,所以正确深入理解递归算法是很有必要的。
一、递归函数的基本概念
递归函数机制理解:调用函数的静态和动态机制理解:调用函数和被调用函数虽然是同一个静态代码,但是运行时被函数运行的栈空间独立于调用函数的栈空间,调用点不同,函数状态栈地址也不同,所以运行时调用函数和被调用函数在代码副本还是数据副本上都是完全不同的,只有通过返回值和调用点进行联系。
递归的调用形式:直接递归调用F1->F1,间接递归F1->F2->F1,很多情况下是直接递归...
分类:
其他好文 时间:
2015-04-28 09:41:27
阅读次数:
150
转载出处 http://www.cnblogs.com/AnnieKim/archive/2013/06/15/MorrisTraversal.html博主很认真,这里转载一下以防丢失链接本文主要解决一个问题,如何实现二叉树的前中后序遍历,有两个要求:1. O(1)空间复杂度,即只能使用常数空间;2...
分类:
其他好文 时间:
2015-04-28 07:03:17
阅读次数:
148
一、什么是prototype在创建构造函数时,如果在函数内进行变量声明,声明的将是私有变量,外部无法访问。会使用this来进行实例变量和函数的声明,以保证通过使用该构造函数来声明的对象可以调用这些变量和函数。然而生命实例函数会在每次新建一个对象时都复制一个一模一样的函数到栈空间,十分浪费资源。pro...
分类:
其他好文 时间:
2015-04-24 22:42:49
阅读次数:
128
今天终于知晓了为什么在main函数外定义大数组了:数组定义在函数中时,占用的内存来自栈空间,栈空间是在进程创建时初始化的,有固定的大小,一般为几十KB,所以太大的数组会耗光栈空间。而全局变量是存储在数据段中的,按需分配,自由增长,可以很大。#include#include#include#inclu...
分类:
其他好文 时间:
2015-04-23 02:01:23
阅读次数:
163
对 像在PHP 里面和整型、浮点型一样,也是一种数据类,都是存储不同类型数据用的,在运行的时候都要加载到内存中去用,那么对象在内存里面是怎么体现的呢?内存从逻 辑上说大体上是分为4 段,栈空间段、堆空间段、代码段、初始化静态段,程序里面不同的声明放在不同的内存段里面,数据段(data segment...
分类:
Web程序 时间:
2015-04-21 22:33:12
阅读次数:
146
栈 push 入栈 pop 出栈 任意时刻,SS:SP 指向栈顶元素 SS 段寄存器 SP 栈指针栈空 SS:SP指向栈空间最高地址单元的下一个单元入栈,出栈都会导致超界push 寄存器 将一个寄存器的数据入栈pop 出栈,用一个寄存器接收出栈的数据push 段寄存器 pop 段寄存器 push 内...
分类:
编程语言 时间:
2015-04-21 00:03:45
阅读次数:
164
JVM内存板块分为5大块:JAVA堆、永久代、栈空间、本地方法栈、Cheap。JAVA堆:又名Heap区,包括Young、old两大板块永久代:、栈空间:运行时线程私有栈空间本地方法栈:C部分的代码区域Cheap:非java区域的内存使用,有些JNI的调用会用到堆内存Yong空间分为3个板块:1个Eden+2..
分类:
编程语言 时间:
2015-04-20 09:42:42
阅读次数:
176
1.应用程序都是由代码段,数据段,BSS段以及堆空间,栈空间组成。2.布局方式:(1)代码段在最低地址处,一般都是从0x8048000开始,这是虚拟地址,每一个应用程序都是这样的(2)数据段紧贴着代码段(3)在往上是BSS段其实也是一种数据段(4)在往上是堆空间,堆空间是往上增长的(5)定不一般是栈...
分类:
系统相关 时间:
2015-04-16 21:21:14
阅读次数:
144
进程内核栈、用户栈
1.进程的堆栈
内核在创建进程的时候,在创建task_struct的同事,会为进程创建相应的堆栈。每个进程会有两个栈,一个用户栈,存在于用户空间,一个内核栈,存在于内核空间。当进程在用户空间运行时,cpu堆栈指针寄存器里面的内容是用户堆栈地址,使用用户栈;当进程在内核空间时,cpu堆栈指针寄存器里面的内容是内核栈空间地址,使用内核栈。
2.进程用户栈和内核栈的切...
分类:
系统相关 时间:
2015-04-15 17:17:16
阅读次数:
150
在网上看到一篇关于php对象在内存中分配的博文,特地记录下来,再稍微修饰下。对像在PHP 里面和整型、浮点型一样,也是一种数据类,都是存储不同类型数据用的,在运行的时候都要加载到内存中去用,那么对象在内存里面是怎么体现的呢?内存从逻 辑上说大体上是分为4 段,栈空间段、堆空间段、代码段、初始化静态段...
分类:
Web程序 时间:
2015-04-11 22:17:39
阅读次数:
159