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

Главная Форумы Программирование Помощь с решением задач на Prolog Общие вопросы Вычисление корня степени 2^k от N на Prolog

В этой теме 1 ответ, 2 участника, последнее обновление  Васильев Владимир Сергеевич 2 года/лет, 5 мес. назад.

  • Автор
    Сообщения
  • #2214

    questioner
    Участник

    Помогите решить задачу: входными данными для программы являются целые числа k и N, необходимо из числа N извлечь корень степени 2^k. Я знаю, что корень извлекается функцией sqrt, но как мне применить ее, чтобы извлечь корень степени 2^k?

  • #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), но я так понимаю, преподаватель требует именно рекурсивное решение?

Для ответа в этой теме необходимо авторизоваться.