Вычисляющие E ^ x Использование рекурсии и серии Taylor
-
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 представляет собой делитель, следует увеличивать на один раз, а в конечной итерации будет равным общему количеству итераций.
Решение
Поскольку метод статичен, вы действительно можете просто хранить его в статической переменной в первом вызове.Вам нужно будет бросить заявление, чтобы проверить, только ли это первая итерация.Я добавлю код позже, но сейчас нет времени.
или вы можете отслеживать количество итераций в переменной.Делегат другому способу, который является «реальным» рекурсивным методом, и проходит разные аргументы.
Все виды разных возможных решений.
Вы можете включить его в петлю, но это, возможно, не впечатлило вашему руководителю.