Відповісти на це може бути трохи пізно, але найбільш простим і точним способом обчислити квадратний корінь є метод Ньютона.
У вас є число, яке ви хочете обчислити його квадратний корінь, (num)
і ви маєте здогад про його квадратний корінь (estimate)
. Оцінка може бути будь-яким числом більше 0, але число, яке має сенс значно скоротити рекурсивну глибину виклику.
new_estimate = (estimate + num / estimate) / 2
Цей рядок обчислює більш точну оцінку з цими 2 параметрами. Ви можете передати функцію new_estimate для функції та обчислити інше new_estimate, яке є більш точним, ніж попереднє, або ви можете зробити таке рекурсивне визначення функції.
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)
Наприклад, нам потрібно знайти корінь квадратного 30. Ми знаємо, що результат між 5 і 6.
newtons_method(30,5)
число 30, а оцінка - 5. Результат від кожного рекурсивного дзвінка:
5.5
5.477272727272727
5.4772255752546215
5.477225575051661
Останній результат - найбільш точне обчислення квадратного кореня числа. Це те саме значення, що і вбудована функція math.sqrt ().