Написать функцию, проверяющую, является ли число степенью двойки - Lisp

Узнай цену своей работы

Формулировка задачи:

написать функцию, проверяющую, является ли число степенью двойки.

Решение задачи: «Написать функцию, проверяющую, является ли число степенью двойки»

textual
Листинг программы
(defun is-power-of-2 (n)
  (cond ((= n 1) t)
        ((zerop (% n 2)) (is-power-of-2 (\ n 2)))
        (t nil)))
 
==> is-power-of-2
 
(is-power-of-2 32768)
 
==> T
 
(is-power-of-2 32767)
 
==> NIL

Объяснение кода листинга программы

В коде определена функция с именем is-power-of-2. Она принимает один аргумент n. Функция проверяет, является ли число n степенью двойки. Если n равно 1, то функция возвращает t. Если n равно 0, то функция возвращает nil. В противном случае функция рекурсивно вызывает саму себя с аргументом n, уменьшенным на 2, и проверяет, равно ли значение выражения (n % 2) нулю. Если это так, то функция возвращает t. Если нет, то функция возвращает nil. Пример использования функции: (is-power-of-2 32768) -> T (is-power-of-2 32767) -> NIL

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы