使用mit-scheme尝试一些Lisp。
(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
另一个版本使用线性递归方法,因此存在类似的错误。 怎么办?
答案 0 :(得分:5)
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)))))