재귀 및 테일러 시리즈를 사용하여 e ^ x 계산
-
20-12-2019 - |
문제
Taylor 시리즈의 인식 된 형태를 사용하여 e ^ X를 재귀 적으로 계산해야합니다.
방정식 : e ^ x= 1 + x + (x ^ 2) / 2! + ... + ((x ^ n) / n!))
Factored 형식 : E ^ X= 1 + x (1 + x / 2 * (1 + x / 3 * (... (1 + x / n)))))
아래의 함수 정의에서 'x'는 전원이고 'n'은 e ^ x를 추정하는 총 용어의 총 수입니다. 누군가가 올바른 방향으로 나를 가리킬 수 있다면 나는 더 좋아할 것입니다. Factioned Equation의 가장 안쪽의 용어의 기본 케이스를 사용하는 것을 포함하여 여러 가지 방법을 시도했지만 아무 소용도 없었습니다.
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이 바이어스 인 경우 매번 하나씩 증가해야하며 최종 반복에서 총 반복 수와 동일합니다.
해결책
메소드가 정적이기 때문에 실제로 첫 번째 호출의 정적 변수에 저장할 수 있습니다.IF 문을 던져서 첫 번째 반복인지 확인해야합니다.나중에 코드를 추가하지만 지금은 시간이 없으므로
또는 변수의 반복 수를 추적 할 수 있습니다."실제"재귀 메서드 인 다른 방법으로 위임하고 다른 인수를 전달합니다.
모든 종류의 가능한 해결책.
루프로 바꿀 수 있지만, 그것은 당신의 감독자를 감동시키지 못할 것입니다.