J'ai créé une méthode de racine carrée babylonienne récursive, mais je voudrais incorporer une erreur. Je veux que le programme s'arrête lorsque le numéro de test est + ou - l'erreur pour la racine carrée réelle. Dans ce cas, le programme s'arrêterait à 5.015 .... puisque 5.015 est à 0,1 de la racine carrée réelle (5).Racine carrée babylonienne récursive de travail, besoin d'incorporer une erreur.
public class BabyRoot {
private static double testnum = 0;
private static double targetnum = 0;
private static double error = 0;
public static void babyRoot(double num) {
testnum = 0.5 * (testnum + (targetnum/testnum));
System.out.println("Test number equals: " + testnum);
if ((testnum * testnum) == targetnum)
System.out.println("The correct square root is: " + testnum);
else
babyRoot(testnum);
}
public static void main(String[] args) {
error = 0.1;
testnum = 25;
targetnum = testnum;
babyRoot(testnum);
}
}
Sortie:
Test number equals: 13.0
Test number equals: 7.461538461538462
Test number equals: 5.406026962727994
Test number equals: 5.015247601944898
Test number equals: 5.000023178253949
Test number equals: 5.000000000053722
Test number equals: 5.0
The correct square root is: 5.0
Ok merci pour nous laisser savoir. Quelle est votre question? Est-ce que ce n'est pas juste une simple question de soustraire les deux nombres, en prenant la valeur absolue (si nécessaire), et en l'insérant dans une instruction if? – tnw
Y a-t-il une raison pour laquelle vous ne pouvez pas mettre cette vérification dans votre programme? cela semble être une condition plutôt simple. –
Etes-vous sûr que c'est comme cela que vous souhaitez définir l'erreur? Dans les calculs numériques, vous n'avez pas toujours le privilège d'une réponse "vraie" facilement disponible, donc habituellement la valeur d'erreur est utilisée différemment (par exemple la différence entre le résultat dans deux itérations consécutives, ou la différence quand vous faites un calcul inverse). – RealSkeptic