C - 分段故障中的指数(exp)函数

时间:2012-12-05 11:00:15

标签: c segmentation-fault

我使用此代码,但会出现分段错误。这有什么不对?

GNU nano 2.2.6文件:taak8.c

#include<stdio.h>

double recursie(double som,double oud, double x, int stap){
    double y = oud*x/stap;
    if(y >= 1/1000){
            return recursie(som+y,y,x,stap++);
    } else {
            return som;
    }
}

double exp(double x){
    return recursie(1,1,x,1);
}

int main(){
    double inp;
    scanf("%lf",&inp);
    printf("your result %lf",exp(inp));
    return 0;
}

2 个答案:

答案 0 :(得分:4)

if(y >= 1/1000)存在问题。 1/1000始终为0。所以直接把0放在那里。

但我想你想在下面这样做,试试这个

if(y >= 1.0/1000)

这也是

recursie(som+y,y,x,++stap);

使用++stap递增stap而不是stap++。因为您必须将递增的stap值发送到递归函数调用。

答案 1 :(得分:2)

您需要增加步骤之前调用递归步骤,而不是之后。换句话说,您需要使用预增量,而不是后增量:

return recursie(som+y,y,x,stap+1);