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

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

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

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

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

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

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

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

  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
Похожие ответы