Для удовольствия я пытался оценить гауссовский интеграл от 0 до 1, используя разложение в ряд. По этой причине, я написал функцию факториала, которая хорошо работает до 20 (я проверил), а затем я написал это:Гауссовское интегральное и двойное деление
int main(){
int n;
long double result=0;
for(n=0; n<=5; n++){
if(n%2==0){
result+=(((long double) 1/(long double)(factorial(n)*(2*n+1))));
} else {
result-=(((long double) 1/(long double)(factorial(n)*(2*n+1))));
}
}
printf("The Gaussian integral from 0 to 1 is %Lf\n", result);
}
Это дает мне странное отрицательное число, которое, очевидно, даже не близко. Я подозреваю, что проблема связана с актерским составом, но я не знаю, что это такое. Есть предположения? Это не первое, что я пробовал. Я попытался преобразовать что-либо в выражение и поставить явное действие в начале, но это не сработало.
Что является результатом 'factorial (0)'? – mch
Работает для меня: http://ideone.com/VLgnoS – interjay
Это 1, я обратился к проблеме, когда писал функцию. –