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