Question

Donc, je suis nécessaire pour calculer récursivement e ^ x en utilisant une forme factorisée d'une série Taylor:

Équation: E ^ x= 1 + x + (x ^ 2) / 2! + ... + ((x ^ n) / n!))

Formulaire factorisé: E ^ x= 1 + x (1 + x / 2 * (1 + x / 3 * (... (1 + x / n))))

Dans la définition de la fonction ci-dessous, "x" est la puissance et "N" est le nombre total de termes à estimer E ^ x. Je préférerais si quelqu'un pourrait me diriger dans la bonne direction. J'ai essayé de nombreuses manières différentes, notamment en utilisant un cas de base de la durée la plus intérieure de l'équation des prises en compte, mais en vain.

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;
    }


}

J'ai réalisé que "N" devrait augmenter non diminuer comme je l'ai tenté, cependant, l'appel initial à la fonction contient le nombre total d'itérations de la variable 'n' et il n'y a aucun moyen de garder une trace du nombre total d'itérations dans tous les appels récursifs.

la valeur du diviseur de chaque terme dans (1 + (x / n)), où n est le diviseur, devrait augmenter par une à chaque fois, et dans l'itération finale correspondant au nombre total d'itérations.

Était-ce utile?

La solution

Étant donné que la méthode est statique, vous pouvez réellement le stocker dans une variable statique dans le premier appel.Vous aurez besoin de lancer une instruction si pour vérifier si c'est la première itération aussi.Je vais ajouter du code plus tard mais je n'ai pas le temps maintenant.

ou vous pouvez suivre le nombre d'itérations dans une variable.Déléguer à une autre méthode qui est la «réelle» méthode récursive et transmettez différents arguments.

Toutes sortes de solutions différentes possibles.

Vous pouvez la transformer en boucle, mais cela n'importerait pas votre superviseur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top