Поэтому мне необходимо рекурсивно вычислить e^x, используя факторизованную форму ряда Тейлора:
уравнение: е ^ х = 1 + х + (х ^ 2)/2! + ... + ((x^n)/n!))
U(n) = U(n-1)*(x/n)
точка останова |U(n)| ‹ эп.
package lab2;
import java.util.Scanner;
public class Lab2 {
public static void main(String[] args) {
// TODO code application logic here
Scanner in = new Scanner(System.in);
System.out.println("Enter x: ");
int x = in.nextInt();
System.out.println("Enter 0 < e < 1: ");
double e = in.nextDouble();
double result = 1.0;
int n = 1;
double U = x / n;
while (Math.abs(U) >= e)
{
double fa = 1;
for (int i = 1; i <= n; i++)
fa *= i;
result += Math.pow(x, n) / fa;
U *= x / ++n;
}
System.out.println("e^x = " + result);
}
}
Он работает только x + 1 раз, а затем отладка говорит, что U равно 0, и это наша точка останова. Я не могу понять, почему это происходит. Не могли бы вы мне помочь?