Нахождение квадратного корня через dolist - Lisp

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

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

Помогите,пожалуйста.Есть список,нужно с помощью dolist,найти квадратные корни Например: (list 4 9 16 25 49) Ответ: (2 3 4 5 7)

Решение задачи: «Нахождение квадратного корня через dolist»

textual
Листинг программы
  1. (defun sqrt-them-all (w &aux ac)
  2.   (dolist (a (reverse w) ac)
  3.     (setf ac (cons (newton a .05) ac))))
  4.  
  5. (defun newton (x e &optional (z 1))
  6.   (if (> (abs (- x (* z z))) e)
  7.       (newton x e (* (+ z (/ x z)) .5))
  8.       z))
  9.  
  10. > (sqrt-them-all '(4 8 16 32))
  11. (2.0006099 2.8284686 4.0022573 5.6569767)

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

В коде представлена функция sqrt-them-all, которая вычисляет квадратный корень из списка чисел. Она использует вспомогательную функцию newton, которая вычисляет квадратный корень из одного числа с помощью метода Ньютона. Функция newton принимает три аргумента: x, e и z. Аргумент x — это число, из которого необходимо вычислить квадратный корень, e — это требуемая точность вычисления, а z — это начальное приближение для метода Ньютона (по умолчанию равное 1). Если абсолютное значение разности числа x и произведения числа z на само себя больше, чем требуемая точность e, то функция newton вызывает саму себя, передавая в качестве аргументов x, e и результат умножения числа z на само себя, округлённый до пятого знака после запятой. Иначе функция newton возвращает значение z. В функции sqrt-them-all список чисел передаётся в качестве аргумента w. Сначала он перевернутый, поскольку используется функция dolist, которая работает с элементами списка в обратном порядке. Аргумент ac — это аккумулятор, в который собираются корни вычисленных чисел. При выполнении функции sqrt-them-all сначала происходит итерация по перевёрнутому списку чисел. На каждой итерации вызывается функция newton с аргументами, полученными из списка. Результат вычисления функции newton добавляется в аккумулятор ac. В итоге функция sqrt-them-all возвращает список корней вычисленных чисел.

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


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

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

7   голосов , оценка 3.857 из 5

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

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

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