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.
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
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 ...
Partager