Die Antwort mag etwas spät sein, aber die einfachste und genaueste Methode zur Berechnung der Quadratwurzel ist die Newton-Methode.
Sie haben eine Zahl, deren Quadratwurzel (num)
Sie berechnen möchten, und Sie haben eine Vermutung der Quadratwurzel (estimate)
. Die Schätzung kann eine beliebige Zahl größer als 0 sein, aber eine sinnvolle Zahl verkürzt die rekursive Anruftiefe erheblich.
new_estimate = (estimate + num / estimate) / 2
Diese Linie berechnet eine genauere Schätzung mit diesen beiden Parametern. Sie können den Wert new_estimate an die Funktion übergeben und einen anderen Wert new_estimate berechnen, der genauer als der vorherige ist, oder Sie können eine rekursive Funktionsdefinition wie diese erstellen.
def newtons_method(num, estimate):
# Computing a new_estimate
new_estimate = (estimate + num / estimate) / 2
print(new_estimate)
# Base Case: Comparing our estimate with built-in functions value
if new_estimate == math.sqrt(num):
return True
else:
return newtons_method(num, new_estimate)
Zum Beispiel müssen wir die Quadratwurzel der 30er Jahre finden. Wir wissen, dass das Ergebnis zwischen 5 und 6 liegt.
newtons_method(30,5)
Die Nummer ist 30 und die Schätzung ist 5. Das Ergebnis jedes rekursiven Aufrufs ist:
5.5
5.477272727272727
5.4772255752546215
5.477225575051661
Das letzte Ergebnis ist die genaueste Berechnung der Quadratwurzel der Zahl. Dies ist der gleiche Wert wie die integrierte Funktion math.sqrt ().