algorithm

而根据不同来源,算法使用的内存空间分为三类:
指令空间:
编译后,程序指令所使用的内存空间。
数据空间:
算法中的各项变量使用的空间,包括:声明的常量、变量、动态数组、动态对象等使用的内存空间。
栈帧空间:
程序调用函数是基于栈实现的,函数在调用期间,占用常量大小的栈帧空间,直至返回后释放。如以下代码所示,在循环中调用函数,每轮调用 test() 返回后,栈帧空间已被释放,因此空间复杂度仍为 O(1)O(1) 。
算法中,栈帧空间的累计常出现于递归调用。如以下代码所示,通过递归调用,会同时存在 NN 个未返回的函数 algorithm() ,此时累计使用 O(N)O(N) 大小的栈帧空间。
1 | void algorithm(int N) { |

