>我使用此代码,但得到分段错误。这是怎么回事?
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);