Написать функцию, проверяющую, является ли число степенью двойки - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д