我的程序出现分段错误,但不清楚如何解决
I'm getting a segmentation fault error in my program, but it is unclear how
根据我对分段错误的理解,它们发生在您尝试访问程序“space”之外的内存时。我的 IDE 说异常发生在我执行以下操作的第一个 for
循环中: pi = w + i * i;
我不明白我是如何访问我不应该访问的内存的。该程序应该计算 pi,直到给定数量的数字,它还没有完成。发生错误时,我正在测试到目前为止的内容。代码如下:
/// computes the continued fraction, recursivley
int w = 1;
static long double pi = 0;
long double continued_fraction(int k, int i){
for(int i = 1; i <= k; i++){
pi += w + i * i;
w += 2;
pi /= continued_fraction(k, i++);
}
return pi;
}
/// continued fraction method to compute pi, up to a limit k
long double limit_fraction(int k){
int i = 1;
/// continued fraction method
pi = 4 / continued_fraction(k, 1);
return pi;
}
包含的代码具有不定式递归。
让我们打电话给 continued_fraction(1, 1)
。然后我们进入重新定义 i
并将其设置为 1
的 for 循环,然后在它执行时进行第一次迭代: continued_fraction(k, i++);
它执行: continued_fraction(1, 1)
因为 post-increments 提供旧 i
.
此调用与第一次调用完全相同,因此递归会一直进行下去,您会遇到 Whosebug - 崩溃。
根据我对分段错误的理解,它们发生在您尝试访问程序“space”之外的内存时。我的 IDE 说异常发生在我执行以下操作的第一个 for
循环中: pi = w + i * i;
我不明白我是如何访问我不应该访问的内存的。该程序应该计算 pi,直到给定数量的数字,它还没有完成。发生错误时,我正在测试到目前为止的内容。代码如下:
/// computes the continued fraction, recursivley
int w = 1;
static long double pi = 0;
long double continued_fraction(int k, int i){
for(int i = 1; i <= k; i++){
pi += w + i * i;
w += 2;
pi /= continued_fraction(k, i++);
}
return pi;
}
/// continued fraction method to compute pi, up to a limit k
long double limit_fraction(int k){
int i = 1;
/// continued fraction method
pi = 4 / continued_fraction(k, 1);
return pi;
}
包含的代码具有不定式递归。
让我们打电话给 continued_fraction(1, 1)
。然后我们进入重新定义 i
并将其设置为 1
的 for 循环,然后在它执行时进行第一次迭代: continued_fraction(k, i++);
它执行: continued_fraction(1, 1)
因为 post-increments 提供旧 i
.
此调用与第一次调用完全相同,因此递归会一直进行下去,您会遇到 Whosebug - 崩溃。