使用递归堆栈溢出



我的代码中有一个堆栈溢出,我真的不知道是什么原因造成的。父级是一个固定数组,如 14。

protected:
int* parent = new int[14];
int size = 14;
int Tree::level(int i) {
  int count = 0;
  for (int j = 0; j < size; j++) {
    if (parent[i] == -1) {
        count = 1;
    } else {
        count = level(i) + 1; //this is causing the stack Overlow
    }
  }
  return count;
}

以下调用中的递归调用必然会导致无限递归,因为函数中i不会更改。

count = level(i) + 1;

我猜你的意思是使用jparent[i]而不是i在那个电话中。如果没有更多上下文,很难判断在递归调用中使用的正确值是什么。

在条件parent[i] == -1 false 的情况下,函数 "level" 变得无限递归,因此堆栈溢出。

最新更新