Баг в коде для вычисления exp в C++
Я написал код для вычисления функции exp
, но код работает не корректно. Результат работы программы ровно в половину меньше, как это исправить?
#include <iostream>
int factorial(int number);
float exp();
void main() {
std::cout << exp() << std::endl;
}
float exp() {
int x;
float result = 1.0;
std::cout << "Enter x: ";
std::cin >> x;
for (int i = 1; i <= x; ++i) {
result += std::pow(x, i) / factorial(i);
}
return result;
}
int factorial(int number) {
int result = 1;
for (int i = 1; i <= number; ++i) {
result *= i;
}
return result;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Ладно, чтоб было понятно, как:
#include <iostream>
using namespace std;
double Exp(double x, double eps)
{
double sum = 1, term = 1;
for(int n = 1; abs(term) >= eps; ++n)
sum += term *= x/n;
return sum;
}
int main()
{
double x;
cout << "Input x: ";
cin >> x;
cout << "exp(" << x << ") = " << Exp(x,1e-7) << endl;
}