目录
递归 vs 迭代
递归是反复执行一段代码,直到满足条件,然后输出结果;是一种自下而上的解决方法,从基础的问题开始解决,然后不断重复这些步骤,直到任务完成;
迭代是函数反复调用自身,向下传递更小更简化的参数,直到满足终止条件,然后向上返回函数值,从而归纳出输出结果。是一种自上而下的解决方法,将原问题划分为多个子问题,子问题的形式与原问题一致,不断向下划分,直到已知解的基础情况,然后向上归纳出结果。
由于迭代涉及到函数的调用,因此迭代占用的空间更大,时间开销也大。每次函数调用,系统会为其分配栈空间,来存储函数的参数、返回地址等数据。如果迭代次数过多,可能会涉及到栈溢出。
数组和链表在内存上的比较
数组元素不需要额外的指针,指向下一个元素,因此空间利用率高于链表元素。但是数组在内存上需要划分足够连续的空间,可能导致内存的浪费,并且数组的扩容也需要额外的时间和空间开销。
链表元素离散的存储在内存空间上,以节点为单位,可以动态的分配和回收内存空间,操作更灵活。随着反复的分配和回收内存空间,可能会导致空闲的内存空间碎片化。