Вычислить сумму, используя рекурсивую функцию 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) В этом выражении:
(expt x n)
— это функцияexpt
, которая принимает два аргумента:x
иn
. Функцияexpt
возводитx
в степеньn
./
— это оператор деления, который выполняет деление двух чисел.n
— это второй аргумент функцииexpt
. Он передается в качестве аргумента оператору деления/
. Таким образом, в коде выполняется деление результата функцииexpt
, которая возводитx
в степеньn
, наn
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д