动态内存分配查询

时间:2018-06-28 06:00:23

标签: recursion memory memory-management compilation

我们知道

  • 动态内存分配使用堆区域。
  • 要实现递归,我们需要一个堆栈。

所以我们可以说要实现递归,我们将不需要动态内存分配吗?

我完全困惑。

1 个答案:

答案 0 :(得分:0)

递归本身仅需要堆栈。例如,要实现递归阶乘方法

int fact(int n) {
    if (n <= 1) return 1;
    return n * fact(n - 1);
}

仅需要堆栈。推入n - 1,在其上调用fact,然后将结果(可能还会在堆栈中返回)乘以n。但是,即使递归操作本身不需要动态内存,但您通过递归实现的算法可能涉及需要动态内存的任务。因此,没有实现递归本身可能不需要动态内存,但是您正在使用递归来解决的问题可能需要它。