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.