Вычислить значения функции рекурсивным способом - Lisp

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

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

Вычислить значения функции (y=10/1+x), где (0<=x<=20) с шагом 0,5. Все полученные значения хранить в списке. Использовать рекурсию.
Листинг программы
  1. (setq rez '())
  2. (setq x 0)
  3. (defun fun ( x i)
  4. (when (not (zerop i))
  5. (setq y (/ 10 (+ 1 x)))
  6. (fun (+ x 0.5) (- i 1))
  7. (setq y (list y))
  8. (setq rez (append rez y))
  9. (print x)
  10. (print y)
  11. )
  12. )
Не могу понять,где ошибка.

Решение задачи: «Вычислить значения функции рекурсивным способом»

textual
Листинг программы
  1.  (setq rez '()) ;; две глобальные переменные. Зачем?
  2.  (setq x 0)
  3.  
  4. (defun fun (x i)
  5.    (when (not (zerop i))           ;; если i не нуль...
  6.        (setq y (/ 10 (+ 1 x)))     ;; вычисляем очередное значение y (опять глобальная переменная!)  
  7.        (fun (+ x 0.5) (- i 1))      ;; рекурсивный вызов с i на 1 меньшим и x на 0.5 большим
  8.        (setq y (list y))              ;; превращаем y в (y)
  9.        (setq rez (append rez y)) ;; присобачиваем y в хвост глобальной переменной rez
  10.        (print x)                        ;; печатаем x и y Зачем?
  11.        (print y)
  12.     ) ;; когда i станет нулем, в rez должен остаться список...
  13. )

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

В данном коде происходит вычисление функции рекурсивным способом.

  1. Создаются две глобальные переменные: rez и x. Переменная rez инициализируется пустым списком, а x - нулем.
  2. Определяется функция fun, которая принимает два аргумента: x и i. Внутри функции проверяется условие: если i не равно нулю, то выполняется следующий блок кода.
  3. Вычисляется значение y как результат деления 10 на сумму 1 и x. Затем, x увеличивается на 0.5 и функция fun вызывается рекурсивно с новыми значениями аргументов: (+x 0.5) и (-i 1).
  4. Значение y приводится к списку, затем оно добавляется в хвост списка rez.
  5. Выводится значение x и y.
  6. Когда i становится равным нулю, рекурсия завершается и в переменной rez остается список. Вывод: данный код вычисляет функцию, используя рекурсию, и выводит значения x и y.

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


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

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

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

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

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

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