Вот функция в Python, которая использует рекурсию для вычисления квадратного корня числа:
def _sqrt_recursion(n):
if n == 0 or n == 1:
return n
else:
return _sqrt_recursive_helper(n, 0, n)
def _sqrt_recursive_helper(n, start, end):
mid = (start + end) // 2
square = mid * mid
if square == n:
return mid
elif square < n:
return _sqrt_recursive_helper(n, mid + 1, end)
else:
return _sqrt_recursive_helper(n, start, mid - 1)
Функция _sqrt_recursionпринимает на вход число nи возвращает его квадратный корень. Сначала он проверяет, равен ли n0 или 1, и в этих случаях возвращает n. В противном случае он вызывает вспомогательную функцию _sqrt_recursive_helperдля выполнения рекурсивных вычислений.
Вспомогательная функция _sqrt_recursive_helperпринимает три параметра: число n, начальную точку диапазона поиска startи конечную точку диапазона поиска. диапазон поиска конец. Он использует подход бинарного поиска, чтобы сузить диапазон и итеративно найти квадратный корень. Вычисляется средняя точка mid, а квадрат midсравнивается с n. В зависимости от результата диапазон поиска корректируется путем рекурсивного вызова _sqrt_recursive_helperс обновленными начальными и конечными значениями.
Вот пример использования функции:
print(_sqrt_recursion(16)) # Output: 4
print(_sqrt_recursion(25)) # Output: 5
print(_sqrt_recursion(2)) # Output: 1.4142135623730951