Произведение числового ряда - Lisp

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

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

Прослушав одну лекцию в универе пытаюсь решить задачу. Помогите пожалуйста, не могу найти ошибку в коде.
(defun ffff (i n)
       (do ((rez 1))
           ((<= i n) rez)
         (setq rez (* (/ (+ i 1) (+ i 2))))
         (setq n (+ n 1))
         )
       )
 
(ffff 1 4)

Решение задачи: «Произведение числового ряда»

textual
Листинг программы
(defun ffff (n)
  (do ((i 1) (rez 1))
      ((> i n) rez)
    (setq rez (* rez (/ (+ i 1) (+ i 2))))
    (setq i (+ i 1))
  )
)
 
(ffff 4)

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

В данном коде определен функционал с именем ffff, который принимает в качестве аргумента n. Для решения задачи используется цикл do, который выполняется до тех пор, пока значение переменной i не станет больше n. Внутри цикла происходит следующее:

  1. Переменная rez инициализируется единицей.
  2. Переменная i инициализируется единицей.
  3. Результат умножения rez на значение (i+2)/(i+1) сохраняется в переменной rez.
  4. Значение i увеличивается на единицу.
  5. Цикл продолжается до тех пор, пока значение i не станет больше n. После выполнения цикла, функционал возвращает полученный результат. Затем, вызывается функция ffff с аргументом 4.

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

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