roj*_*cyk 4 c recursion function segmentation-fault
我的任务是创建一个函数来计算我的输入的反正弦。
我尝试使用 xcode 来调试它。一切正常,直到arcsin(new);调用返回为止。然后是一个segmentation fault: 11. 我不知道为什么,但float arcsin(floatvalue){ ... }运行第二个周期时的断点告诉我 float old 和 float value 是NAN。
float arcsin(float value){
float old = value;
float new = value + (0.5 * ((value * value * value)/3));
float accurate = 0.00001;
if ((new - old) < accurate){
return new;
}
else{
return arcsin(new);
}
}
int function_arcsin(int sigdig, float value){
value = arcsin(value);
printf("%.10e\n",value);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当调用堆栈变得太大时,即递归级别太多时,就会发生段错误。
在您的情况下,这意味着条件(new - old) < accurate将始终评估为 false - 好吧,也许并不总是,但足够多次来使调用堆栈膨胀。
测试您的代码,我发现new(可能不是一个好的变量名称选择)不断增长,直到超过浮点数的限制。你的算法可能是错误的。