ここで何が問題なのかよくわかりません。私は別にそれをテストしたので、階乗関数が正しいことがわかります。しかし、eを計算する関数が私を引き上げています。私がしなければならないことは、各階乗が計算された後にすべての値を加算することだけです。しかし、私はそれをCコードに翻訳するのに問題があります。問題は私の2番目の機能です。どのような助けや指針をいただければ幸いです。定数の計算値を取得しないe
#include <stdio.h>
#include <math.h>
#define NOERROR 0
#define DECIMAL_PLACES 16
#define EXPECTED_E 2.7182818284590452L
long calcFactorial(int);
double calcE(int);
long calcFactorial(int n)
{
long sum = 0;
sum = n;
if(n == 0)
{
return 1;
}
else
{
while(n != 1)
{
sum = sum * (n - 1);
n = n - 1;
}
printf("factorial sum: %ld\n", sum);
return sum;
}
}
double calcE(int n)
{
double e = 0;
int counter = 0;
for (counter = 0; counter < DECIMAL_PLACES; counter++)
{
e = e + (1/calcFactorial(n));
n--;
}
printf("Expected e value: %0.16Lf\n", EXPECTED_E);
printf("Calculated e value: %0.16d\n", e);
return e;
}
int main()
{
calcE(10);
}
なぜ 'calcE'は' long'を返すのですか? –
'1/calcFactorial(n)'は整数除算のため常に0です。 これを変更することができます: '1.0/calcFactorial(n)' –
@EliSadoff権利は、ダブル、またはおそらくは長いダブルでなければなりません。 –