/* Calcul d'une racine carree */ public class RacineCarree { ///////////////////////////////////////////////// /* Constante de definition de la precision */ /* de calcul */ static final double EPSILON = 0.00000000000001; /* Fonction recursive de calcul et retour */ /* de la racine carree d'un nombre reel */ /* que l'on sait être comprise */ /* dans l'intervalle [a,b] */ /* x : le nombre dont on souhaite calculer */ /* la racine carree */ /* a : la borne minimale de l'intervalle */ /* de recherche */ /* b : la borne maximale de l'intervalle */ /* de recherche */ static double racine(double x,double a,double b) { double res; double m = (b+a)/2.0; if ( b-a > EPSILON ) { if ( m*m > x ) { res = racine(x,a,m); } else { res = racine(x,m,b); } } else { res = m; } return res; } /* Fonction de calcul et retour */ /* de la racine carree d'un nombre reel */ /* compris dans l'intervalle [0.0,1.0] */ /* x : le nombre dont on souhaite calculer */ /* la racine carree */ static double racineCarree(double x) { double v = racine(x,0.0,1.0); return v; } ///////////////////////////////////////////////// /* Programme principal */ public static void main(String [] args) { double x; double racine; Ecran.afficher("Valeur ? "); x = Clavier.saisirDouble(); racine = racineCarree(x); Ecran.afficherln("Racine : ",racine); Ecran.afficherln("Sqrt : ",Math.sqrt(x)); } }