Pode ser um pouco tarde para responder, mas a maneira mais simples e precisa de calcular a raiz quadrada é o método de Newton.
Você tem um número que deseja calcular sua raiz quadrada (num)
e adivinhar sua raiz quadrada (estimate)
. A estimativa pode ser qualquer número maior que 0, mas um número que faça sentido reduz significativamente a profundidade da chamada recursiva.
new_estimate = (estimate + num / estimate) / 2
Esta linha calcula uma estimativa mais precisa com esses 2 parâmetros. Você pode passar o valor new_estimate para a função e calcular outro new_estimate que seja mais preciso que o anterior ou pode fazer uma definição de função recursiva como esta.
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)
Por exemplo, precisamos encontrar a raiz quadrada dos anos 30. Sabemos que o resultado está entre 5 e 6.
newtons_method(30,5)
número é 30 e estimativa é 5. O resultado de cada chamada recursiva é:
5.5
5.477272727272727
5.4772255752546215
5.477225575051661
O último resultado é o cálculo mais preciso da raiz quadrada do número. É o mesmo valor que a função interna math.sqrt ().