Bu cevaplamak için biraz geç olabilir, ancak karekök hesaplamanın en basit ve doğru yolu newton'un yöntemidir.
Karekökünü hesaplamak istediğiniz bir sayınız ve karekökünü (num)tahmin edersiniz (estimate). Tahmin, 0'dan büyük herhangi bir sayı olabilir, ancak anlamlı olan bir sayı, yinelemeli çağrı derinliğini önemli ölçüde kısaltır.
new_estimate = (estimate + num / estimate) / 2
Bu çizgi, bu 2 parametre ile daha doğru bir tahmin hesaplar. İşleve new_estimate değerini iletebilir ve öncekinden daha doğru olan başka bir new_estimate hesaplayabilir veya bunun gibi özyinelemeli bir işlev tanımı yapabilirsiniz.
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)
Örneğin 30'un karekökünü bulmamız gerekiyor. Sonucun 5 ile 6 arasında olduğunu biliyoruz.
newtons_method(30,5)
sayı 30 ve tahmin 5'tir. Her yinelemeli çağrının sonucu:
5.5
5.477272727272727
5.4772255752546215
5.477225575051661
Son sonuç, sayının kare kökünün en doğru hesaplanmasıdır. Yerleşik math.sqrt () işleviyle aynı değerdir.