什么是递归堆栈的大小?
递归。 函数本身的调用被称为递归。
堆栈。 堆栈是一种数据结构,其中的元素只在称为堆栈顶部的一端插入和删除。它遵循LIFO(先进先出)机制。
递归堆栈大小。
当一个递归函数被调用时,它的参数被存储在一个叫做激活记录的数据结构中。每次调用递归函数时,都会产生一个新的激活记录并存储在内存中。这些激活记录存储在称为递归堆栈的特殊堆栈中。当函数执行完成后,这些激活记录被删除。
因此,当一个递归函数被调用时,它会为递归函数的不同值生成激活记录,从而扩展了递归栈的大小。当递归函数执行完成后,它的激活记录会被逐一删除,因此收缩了递归栈的大小。递归堆栈的大小取决于创建和删除的激活记录的数量。
例子。
C++
#include <bits/stdc++.h>
using namespace std;
int fact(int n)
{
if (n == 1)
return 1;
return fact(n - 1);
}
int main()
{
int p;
p = fact(2);
return 0;
}
举例说明。
对于上述程序。首先,主栈的激活记录被生成并存储在栈中。

初始状态
在上面的程序中,有一个递归函数事实,其局部参数为n。在上面的例子程序中,n=2在递归函数调用中被传递。
**第一个步骤。**首先,函数被调用n =2,其激活记录在递归栈中被创建。

第一步
**第二步。**然后根据递归函数,对n=1进行调用,并在递归栈中创建其激活记录。

第2步
**第三步。**在对n=1值执行函数后,因为它是一个基本条件,它的执行被完成,其激活记录被删除。

第3步
**第四步。**同样地,值n=2的函数(它的前一个函数)被执行,其激活记录被删除。它从递归函数中出来,进入主函数。

第四步
因此,在上面的例子中,对于递归函数事实和值,n=2的递归堆栈大小不包括主函数是2。