gpt4 book ai didi

c++ - 大规模递归函数中的段错误

转载 作者:搜寻专家 更新时间:2023-10-31 01:38:19 24 4
gpt4 key购买 nike

我有一个函数几乎无限次地调用自己,但它确实有一个结束。它计算数学公式(在 TeX 中):

x<a :

g_{a}(x)=1

x>=a :

g_{a}(x)=g_{a}(x-1)+g_a(x-a)

这是我的代码(C++):

#include <iostream>
#include <math.h>
#include <stdio.h>
#include <cmath>
using namespace std;
double g( double a, double x){
if (x>=a) return (g(a,x-1)+g(a,x-a));
else if (x<a) return 1;
return 0;
}
int main(){cout << g(sqrt(10000019),10000019);}

我用 g(sqrt(10000019),10000019); 调用函数如何停止 SEGFAULT?

最佳答案

我怀疑您的段错误是由于堆栈空间不足造成的。

你可以限制/不限制你的堆栈空间有多大(至少在 Linux 上)使用来自 tcsh 的限制命令。

 % limit 
cputime unlimited
filesize unlimited
datasize unlimited
stacksize 10240 kbytes
coredumpsize 0 kbytes
memoryuse unlimited
vmemoryuse unlimited
descriptors 4096
memorylocked 64 kbytes
maxproc 1024

然后您可以取消限制您的筹码量

% unlimit stacksize
% limit

cputime unlimited
filesize unlimited
datasize unlimited
stacksize unlimited
coredumpsize 0 kbytes
memoryuse unlimited
vmemoryuse unlimited
descriptors 4096
memorylocked 64 kbytes
maxproc 1024

再试一次。

关于c++ - 大规模递归函数中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32998209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com