Exos de prog en récursivité (tangeante)
Salut tout le monde je commence la programmation et il y a un exercice dont j'ai la solution mais je comprend toujours pas pourquoi la solution marche à moins qu'il y ai un erreur :
Voici l'énoncé : Ecrire un programme récursif pour calculer la tengente de x en utilisant la formule :
tan(x) = 2t / (1-t*t) dans laquelle t = tan (x/2) et le fait que si x est petit, par exemple inférieur à 10^-6 alors tan(x) est à peu près égale à x.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
public class Main {
public static double tan(double x){
if(x<1e-8)
return x;
double t=tan(x/2);
return 2*t/(1-t*t);
}
public static void main(String[] args) {
ReadConsole c = new ReadConsole();
System.out.println("Entrer le chiffre tangeante");
double x = c.readInt();
double res = tan(x);
System.out.println(res);
}
} |
Moi dans cette solution je comprend que pour x on appelle la méthode tan. Dans ce cas si x est moins grand 0.0000000001 alors dans ce cas on retourne que tan est x. Par contre si x est plus grand alors dans ce cas on rappelle la fonction tan avec x divisé par deux pour encore recommencer encore et encore jusqu'à ce que x soit assez petit pour dire que on retourne x car il est infèrieur à 0.00000001 ce qui n'a aucun sens je l'admets.
Pour résumé je ne comprend pas comment on arrive au deuxième return.
Merci ça fait une heure que je suis dessus et j'y comprend que dalle ...