【发布时间】:2020-10-05 16:42:07
【问题描述】:
我一直在寻找一些 D&C 算法,结果发现了这个
int sumArray(int anArray[], int size)
{
//base case
if (size == 0)
{
return 0;
}
else if (size == 1)
{
return anArray[0];
}
//divide and conquer
int mid = size / 2;
int rsize = size - mid;
int lsum = sumArray(anArray, mid);
int rsum = sumArray(anArray + mid, rsize);
return lsum + rsum;
}
但每次我在没有基本情况的情况下运行代码时,它都会返回段错误错误。 我试图弄清楚为什么这个基本情况如此重要,以至于即使运行 n>1 它仍然返回该错误,有人会在这里伸出援手吗?
【问题讨论】:
-
如果你从不作为基本情况返回,你显然会永远递归......这将用堆栈帧填满堆栈,从而导致段错误。
标签: c++ sorting array-algorithms