Описать функцию, переводящую целое число из десятичной системы в двоичную - Lisp
Формулировка задачи:
Описать функцию, переводящую целое число из десятичной системы в двоичную. Необходимо реализовать функцию при помощи итерационных циклов и рекурсивно.
Решение задачи: «Описать функцию, переводящую целое число из десятичной системы в двоичную»
textual
Листинг программы
(defun dec2bin (n) (let ((r 0) (p 1)) (loop (when (zerop n) (return r)) (setq r (+ r (* (% n 2) p)) p (* p 10) n (\ n 2))))) ==> DEC2BIN (dec2bin 13) ==> 1101
Объяснение кода листинга программы
В данном коде представлена функция dec2bin, которая принимает в качестве аргумента целое число n и переводит его из десятичной системы в двоичную. В функции используется цикл loop, который выполняется до тех пор, пока n не станет равным нулю. Когда n равно нулю, в цикле выполняется операция возврата значения переменной r, которая и будет результатом работы функции. Внутри цикла выполняются следующие действия:
- Переменная r устанавливается равной 0.
- Переменная p устанавливается равной 1.
- Выполняется операция деления n на 2 и результат сохраняется в переменной p.
- Переменная r увеличивается на результат умножения p на результат операции деления n на 2.
- Переменная p увеличивается на 10.
- Переменная n уменьшается на 2. Таким образом, после выполнения цикла loop, в переменной r будет храниться двоичное представление числа n. Пример использования функции: (dec2bin 13) вернет 1101.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д