Задача : Поиск делителя - Lisp

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

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

Привет. Прошу помощи. Надо изменить эту функцию , чтобы найти n-ую цифру числа в конце и выдать цифру, деленную на кол-во цифр

Решение задачи: «Задача : Поиск делителя»

textual
Листинг программы
  1. (defun task (num n &optional (c 0) (p 0))
  2.   (cond ((zerop num) (/ p c))
  3.         ((= 1 n) (task (\ num 10) (- n 1) (+ c 1) (rem num 10)))
  4.         (t (task (\ num 10) (- n 1) (+ c 1) p))))
  5.  
  6. ==> task
  7.  
  8. (task 45632 2)
  9.  
  10. ==> 3/5
  11.  
  12. (task 45632 1)
  13.  
  14. ==> 2/5
  15.  
  16. (task 45632 4)
  17.  
  18. ==> 1

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

В коде определена функция task, которая принимает три аргумента: num (числитель), n (знаменатель) и два необязательных аргумента c (счетчик циклов) и p (результат деления). Если числитель равен нулю, то функция возвращает результат деления, который сохраняется в переменной p. Если знаменатель равен единице, то функция вызывает саму себя, уменьшая знаменатель на единицу и увеличивая счетчик циклов на единицу. Если выполняется третье условие, то функция вызывает саму себя, передавая в качестве аргументов числитель, уменьшенный на десять, знаменатель, уменьшенный на единицу, увеличенный на единицу счетчик циклов и переменную p. Поскольку язык программирования Lisp не имеет скобок для обозначения блоков кода, следующие два условия записываются в виде последовательности выражений без скобок. Если числитель равен нулю, то функция возвращает результат деления, который сохраняется в переменной p. Если знаменатель равен единице, то функция вызывает саму себя, уменьшая знаменатель на единицу и увеличивая счетчик циклов на единицу. Если выполняется третье условие, то функция вызывает саму себя, передавая в качестве аргументов числитель, уменьшенный на десять, знаменатель, уменьшенный на единицу, увеличенный на единицу счетчик циклов и переменную p.

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


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

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

10   голосов , оценка 4 из 5

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

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

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