Определить функцию, подсчитывающую сумму цифр, выделенных из числа - Lisp

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

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

Дано большое натуральное число. Определить функцию, подсчитывающую сумму цифр, выделенных из этого числа. Например: если дано "31415926", ответом будет "31".

Решение задачи: «Определить функцию, подсчитывающую сумму цифр, выделенных из числа»

textual
Листинг программы
(defun +digit (n)
  (if (< n 10) n
      (+ (rem n 10) (+digit (truncate n 10)))))
 
> (+digit 31415926)
31

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

В коде определена функция +digit. При вызове функции с аргументом 31415926 происходит следующее:

  1. Выполняется проверка условия (< n 10). Значение переменной n (31415926) больше 10, поэтому происходит переход к следующему шагу.
  2. Выполняется операция (+ (rem n 10) (+digit (truncate n 10))). Значение переменной n (31415926) делится на 10 (31415926 / 10 = 3141592) и из результата вычитается 10. Затем выполняется рекурсивный вызов функции +digit с аргументом (truncate n 10), который равен 3141592. К результату этой операции добавляется результат вызова функции +digit с аргументом (rem n 10), который равен 31.
  3. Результатом выполнения функции является число 31. Таким образом, в результате вызова функции +digit с аргументом 31415926 получается число 31.

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


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

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

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