Привет, ребята, я делаю дополнительную кредитную программу, и я ее запускаю, но каждый вход, который я использую, всегда заканчивается, чтобы быть 1. Может ли кто-нибудь указать мне в правильном направлении, где я испортил пожалуйста и спасибоНужна помощь в понимании Math в C++
#include<stdio.h>
#include<math.h>
#define Euler 2.718282
#define Pi 3.141593
int main(void)
{
int n;
int n_fact(int n);
printf("Enter n: ");
scanf_s("%d", &n);
while (n < 0)
{
printf("The n value must not be negative");
printf("Enter the value of n: ");
scanf_s("%d", &n);
}
printf("n! Stirling approximation value about %i is %i ", n, n_fact(n));
getchar();
getchar();
return 0;
}
int n_fact(int n)
{
if (n == 0)
{
return 0;
}
else
{
return (int)(1 + 1/(12 * Euler) + 1/(288 * n*n) - 139/(51840 * n*n*n));
}
}
Ваша формула неправильная. Это всегда будет оцениваться до 1,0306 плюс/минус что-то маленькое -> усечение даст 1. –
@PaulR, поэтому мне нужно было бы изменить int n_fact (int n) на float n_fact (int n)? – Failingengineer