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

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

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

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

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

textual
Листинг программы
  1. (defun is-power-of-2 (n)
  2.   (cond ((= n 1) t)
  3.         ((zerop (% n 2)) (is-power-of-2 (\ n 2)))
  4.         (t nil)))
  5.  
  6. ==> is-power-of-2
  7.  
  8. (is-power-of-2 32768)
  9.  
  10. ==> T
  11.  
  12. (is-power-of-2 32767)
  13.  
  14. ==> 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы