C 中的指数 (exp) 函数 - 分割错误



>我使用此代码,但得到分段错误。这是怎么回事?

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

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

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

if(y >= 1.0/1000)

这也

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新