Ошибка в обычной функции Homelisp
Формулировка задачи:
Вот функция, если я задаю х вручную, то всё работает
Вот что выводит
(culcs 4 '(2 5))
PairLis: Слишком мало фактических параметров
Важно! По заданию можно пользоваться только базовыми функциями, без циклов и присваиваний, только простейшие математические car и cdr.
P.S. Факториал
Листинг программы
- (defun culcs(x y)
- (cond
- ((null y) nil)
- (t(cons (* (* (expt -1 (car y)) (/ (+ (* 2 (expt (car y) 2)) 1) (fact (* 2 (car y))))) (expt x (* (car y) 2)))
- (culcs (cdr y))))))
Листинг программы
- (defun iterf(n)
- (cond
- ((> n 0) (cons n (iterf (- n 1))))))
- (defun tim (lat)
- (cond
- ((null lat) 1)
- (t (* (car lat) (tim (cdr lat))))))
Решение задачи: «Ошибка в обычной функции Homelisp»
textual
Листинг программы
- (defun culcs(x y)
- (cond ((null y) nil)
- (t(cons (* (* (expt -1 (car y))
- (/ (+ (* 2 (expt (car y) 2)) 1) (fact (* 2 (car y))))) (expt x (* (car y) 2)))
- (culcs x (cdr y))))))
- ==> culcs
- (culcs 4 '(2 5))
- ==> (96 -69632/4725)
Объяснение кода листинга программы
В коде определена функция с именем culcs. Она принимает два аргумента, x и y. Если y равно nil, то функция возвращает nil. В противном случае (если y не равно nil), функция возвращает результат вычисления следующего выражения: (cons ( ( (expt -1 (car y)) (/ (+ ( 2 (expt (car y) 2)) 1) (fact ( 2 (car y))))) (expt x (* (car y) 2))) где: — car y — первый элемент (символ) списка y — cdr y — все элементы списка y, кроме первого — expt — операция возведения в степень — fact — функция, вычисляющая факториал числа Поэтому, если мы вызовем функцию culcs с аргументами 4 и '(2 5), то она вернет (96 -69632/4725).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д