2

我使用此代码,但收到分段错误。这里有什么问题?

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;
}
4

2 回答 2

4

if(y >= 1/1000)问题就在那里。1/1000永远都是0。所以直接放在0那里。

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

if(y >= 1.0/1000)

这也是

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

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

于 2012-12-05T11:03:19.743 回答
2

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

return recursie(som+y,y,x,stap+1);
于 2012-12-05T11:04:31.407 回答