#scheme #lisp
#схема #lisp
Вопрос:
Пробую немного Lisp, используя mit-scheme.
(define (inv curstate x y)
((cond (= y 1) curstate)
(cond (even? y)
(inv (square curstate) x (/ y 2)))
(else
(inv (* x curstate) x (- y 1)))))
Ошибка интерпретатора:
Неправильно сформированное предложение: curstate
В другой версии используется метод линейной рекурсии, поэтому с ним возникает аналогичная ошибка. Что делать?
Ответ №1:
Ваш синтаксис для cond
неправильный. Вот тот же код с исправленным синтаксисом:
(define (inv curstate x y)
(cond ((= y 1) curstate)
((even? y)
(inv (square curstate) x (/ y 2)))
(else
(inv (* x curstate) x (- y 1)))))