Вычислить сумму, используя рекурсивую функцию common lisp

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

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

Нужно написать рекурсивную функцию, вычисляющую данную сумму. Я не могу разобраться, как это сделать, потому что не могу представить, как без цикла должен происходит инкремент i. И в коммон лисп вроде нельзя возвести переменную в степень переменной? Хочу разобраться, написал сыро и наверняка белиберду, потому что не понимаю, объясните, что к чему, пожалуйста!
 (DEFUN summa(X N)
(COND 
  ((or (not (integerp N))
(not (numberp X))
       (<= N 0)    ) 'ERROR_IN_DATA)
 (T (COND ( (= N 1) (/ 1 1))
 ( T ( +(summa X (- N 1)
     (/ X N))))))))

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

textual
Листинг программы
(/ (expt x n) n)

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

Код представляет собой одну строку, которая содержит следующее выражение: (/ (expt x n) n) В этом выражении:

  1. (expt x n) — это функция expt, которая принимает два аргумента: x и n. Функция expt возводит x в степень n.
  2. / — это оператор деления, который выполняет деление двух чисел.
  3. n — это второй аргумент функции expt. Он передается в качестве аргумента оператору деления /. Таким образом, в коде выполняется деление результата функции expt, которая возводит x в степень n, на n.

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


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

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

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