Điều này có thể hơi muộn để trả lời nhưng cách đơn giản và chính xác nhất để tính căn bậc hai là phương pháp của newton.
Bạn có một số mà bạn muốn tính căn bậc hai của nó (num)
và bạn đoán được căn bậc hai của nó (estimate)
. Ước tính có thể là bất kỳ số nào lớn hơn 0, nhưng một số có ý nghĩa rút ngắn độ sâu cuộc gọi đệ quy đáng kể.
new_estimate = (estimate + num / estimate) / 2
Dòng này tính toán ước tính chính xác hơn với 2 tham số đó. Bạn có thể chuyển giá trị new_estimate cho hàm và tính toán một new_estimate khác chính xác hơn giá trị trước đó hoặc bạn có thể đưa ra định nghĩa hàm đệ quy như thế này.
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)
Ví dụ, chúng ta cần tìm căn bậc hai của 30. Chúng tôi biết rằng kết quả là từ 5 đến 6.
newtons_method(30,5)
số là 30 và ước tính là 5. Kết quả từ mỗi cuộc gọi đệ quy là:
5.5
5.477272727272727
5.4772255752546215
5.477225575051661
Kết quả cuối cùng là tính toán chính xác nhất của căn bậc hai của số. Nó có cùng giá trị với hàm tích hợp math.sqrt ().