小编car*_*_30的帖子

在递归函数中使用堆栈

我需要在递归函数中使用堆栈.在函数递归调用之间,堆栈必须保留内容,并且只能通过函数内的push或pop操作进行修改.

这样做的方法是定义一个像这样的全局堆栈变量:

StackPtr stack = createStack();
Run Code Online (Sandbox Code Playgroud)

另一种方法是将堆栈传递给函数:

int recursiveFunction(int n, StackPtr stack);
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点但没有全局堆栈或将堆栈传递给函数?这个想法是完全封装功能,因此用户只需要独立于程序规范调用它.这就像定义一个静态堆栈,它保存递归调用之间的堆栈内容.

我试过了:

int recursiveFunction(int n){
    static StackPtr stack = NULL;
    stack = createStack();
...
}
Run Code Online (Sandbox Code Playgroud)

但是该函数会在每次调用时重置堆栈.我必须以显示的方式创建堆栈,因为如果我放:

static StackPtr stack = createStrack();
Run Code Online (Sandbox Code Playgroud)

抛出"未初始化的常量"错误.

谢谢.

c recursion data-structures

3
推荐指数
1
解决办法
73
查看次数

标签 统计

c ×1

data-structures ×1

recursion ×1