Количество десятичных цифр числа n - Lisp

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

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

Требуется решить две задачи с использованием рекурсии, но без &optional, initial element, т.к я не понимаю принципа их работы. Дано натуральное число N. Определить функцию, зависящую от N, которая находит количество цифр числа N.

Решение задачи: «Количество десятичных цифр числа n»

textual
Листинг программы
(defun cifr (n)
  (cond
    ((zerop n) 0)
    (t (1+ (cifr (floor n 10))))))

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

В данном коде:

  1. (defun cifr (n) - определение функции с именем cifr, которая принимает один аргумент n.
  2. (cond - начало условной конструкции. Условие - n равно нулю.
  3. ((zerop n) 0) - если n равно нулю, то возвращаем 0.
  4. (t - иначе, если n не равно нулю.
  5. (1+ (cifr (floor n 10)) - вызываем рекурсивно функцию cifr, передавая в нее значение (floor n 10), и добавляем 1 к результату.
  6. )) - конец условной конструкции.
  7. (defun cifr (n) - определение функции с именем cifr, которая принимает один аргумент n.
  8. (cond - начало условной конструкции. Условие - n равно нулю.
  9. ((zerop n) 0) - если n равно нулю, то возвращаем 0.
  10. (t - иначе, если n не равно нулю.
  11. (1+ (cifr (floor n 10)) - вызываем рекурсивно функцию cifr, передавая в нее значение (floor n 10), и добавляем 1 к результату.
  12. )) - конец условной конструкции. Таким образом, данный код определяет функцию cifr, которая рекурсивно вычисляет количество десятичных цифр числа n. Если число n равно нулю, то функция возвращает 0. В противном случае, функция вызывает саму себя, передавая в нее значение (floor n 10), и добавляет 1 к результату.

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


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

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

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