我正在写一个最大的公共因子函数。
我一直在说错误
"(如果t(设定q).....)"是无效的语法
所以我评论了它。但后来我被告知我的语法无效。
语言错误'做'条款
但是我看着它并且看不到任何错误。为什么我的代码不起作用?
(defun myGCD (a b)
"My function, which returns the Greatest Common Factor"
(let ((x a) (y b) (z 0))
(loop until (or (zerop x) (zerop y))
do ( ;(progn
;(if t ;(< a b)
; If case
;((setq b (- b a)) (setq c a))
; Else case
;((setq a (- a b)) (setq c b))
;)
;(return c)
);)
)
)
)
(myGCD 10 20)
答案 0 :(得分:2)
您的代码中存在基本语法错误。
在LOOP表格中,您需要在DO之后拥有一个或多个复合形式。
net.aninnovation.csp.main.imageButton
是不允许的,因为(loop ... do () )
不是复合形式。
另请注意,括号不是按顺序对表达式进行分组。
()
以上是无效的Lisp。在Scheme中它可能是正确的,但是第一个表单需要返回一个函数。
要对表达式进行分组,您需要((foo 1) (bar 2))
这样的内容,它允许嵌入的表单并返回最后一个的值:
progn
以上是有效的。
答案 1 :(得分:0)
事实证明,你不能做空的事情。命令。这并没有解释为什么其他逻辑失败了,但我会再看一下。