我使用此代码,但会出现分段错误。这有什么不对?
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;
}
答案 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);