Ответ в теме: Вычисление корня степени 2^k от N на Prolog

      Комментарии к записи Ответ в теме: Вычисление корня степени 2^k от N на Prolog отключены
#2216

Корень степени 2^k можно вычислить путем применения функции sqrt k-раз:
Рекурсивная формула вычисления

%% nth_radical(K, Value, Result)
%% Result is 2^Kth radical from Value
nth_radical(0, Value, Value):-!.
nth_radical(K, Value, Result):-
  NextK is K - 1,
  nth_radical(NextK, Value, PrevResult),
  Result is sqrt(PrevResult).

Первое правило обрабатывает случай, когда K равно нулю – тогда 2^K равно единице, а значит, результат будет совпадать с исходным значением. Во всех остальных случаях управление вычислительным процессом передается второму правилу, которое рекурсивно вычисляет степень от2^(k-1) и возвращает корень от полученного результата.

С другой стороны, чтобы вычислить корень степени 2^k было бы достаточно возвести исходное число в степень 1/(2^k), но я так понимаю, преподаватель требует именно рекурсивное решение?