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常にになります00だから直接そこに置いてください。

しかし、私はあなたがこれを以下でやりたかったと思います、代わりにこれを試してください

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 に答える