Вычисляющие E ^ x Использование рекурсии и серии Taylor

StackOverflow https://stackoverflow.com//questions/22003994

  •  20-12-2019
  •  | 
  •  

Вопрос

Так что я должен рекурсивно рассчитать e ^ x с использованием фактологии формы серии Taylor:

Уравнение: E ^ x= 1 + x + (x ^ 2) / 2! + ... + ((x ^ n) / n!))

Форма факторов: e ^ x= 1 + x (1 + x / 2 * (1 + x / 3 * (... (1 + x / n))))

В определении функции ниже «x» является мощность и «n» - это общее количество терминов для оценки E ^ x. Я бы предпочел, если бы кто-то мог указать мне в правильном направлении. Я пробовал много разных способов, в том числе с использованием базового случая самого внутреннего срока фабричному уравнению, но безрезультатно.

static double eThree(double x, long n) {
   //this is what i tried
   if(n==0){
        return 1 +x/n;
    }else{
        double a= (1+(x/n)) * (eThree(x,n-1));
        System.out.println(a);
        return a;
    }


}
.

Я понял, что «n 'должен увеличить не уменьшение, как я пытался, однако оригинальный вызов функции имеет общее количество итераций в переменной' n ', и нет способа отслеживать общее количество итераций на протяжении всех рекурсивных вызовов.

Значение делителя каждого термина в (1 + (x / n)), где n представляет собой делитель, следует увеличивать на один раз, а в конечной итерации будет равным общему количеству итераций.

Это было полезно?

Решение

Поскольку метод статичен, вы действительно можете просто хранить его в статической переменной в первом вызове.Вам нужно будет бросить заявление, чтобы проверить, только ли это первая итерация.Я добавлю код позже, но сейчас нет времени.

или вы можете отслеживать количество итераций в переменной.Делегат другому способу, который является «реальным» рекурсивным методом, и проходит разные аргументы.

Все виды разных возможных решений.

Вы можете включить его в петлю, но это, возможно, не впечатлило вашему руководителю.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top