Loops 循环:FOR子句应出现在循环';主体
我有这个代码,但是我在运行它时得到了这个错误的答案,有人知道如何修复它或者为什么我会得到这个错误吗Loops 循环:FOR子句应出现在循环';主体,loops,lisp,common-lisp,Loops,Lisp,Common Lisp,我有这个代码,但是我在运行它时得到了这个错误的答案,有人知道如何修复它或者为什么我会得到这个错误吗 (defun pell (n) (setq n (+ n 1)) (loop repeat n for current = 0 then next and next = 1 then (+ (* 2 next) current) collect current)) (print (pell 6)) 您需要使用for更改和,并将repeat
(defun pell (n)
(setq n (+ n 1))
(loop repeat n
for current = 0 then next
and next = 1 then (+ (* 2 next) current)
collect current))
(print (pell 6))
您需要使用
for
更改和,并将repeat
子句移动到变量子句之后。对于
关键字,每个迭代变量必须由自己的引入。以下是正确的版本:
(defun pell (n)
(loop for current = 0 then next
for next = 1 then (+ (* 2 next) current)
repeat (1+ n)
collect current))
(pell 6) ; => (0 1 3 9 27 81 243)
注意:SBCL毫无问题地接受了我以前版本的for
之前的repeat
,但官方语法要求在for
子句之后重复
在中,您可以找到循环
原语的正确语法
可以找到循环
构造的介绍。您需要使用更改和for
,并将repeat
子句移动到变量子句之后。对于
关键字,每个迭代变量必须由自己的引入。以下是正确的版本:
(defun pell (n)
(loop for current = 0 then next
for next = 1 then (+ (* 2 next) current)
repeat (1+ n)
collect current))
(pell 6) ; => (0 1 3 9 27 81 243)
注意:SBCL毫无问题地接受了我以前版本的for
之前的repeat
,但官方语法要求在for
子句之后重复
在中,您可以找到循环
原语的正确语法
可以找到循环
构造的介绍
FOR子句应该出现在循环的主体之前
在FOR之前有一个REPEAT子句。Lisp抱怨FOR应该出现在主体之前
因此而不是
REPEAT ...
FOR ...
...
是的
FOR子句应该出现在循环的主体之前
在FOR之前有一个REPEAT子句。Lisp抱怨FOR应该出现在主体之前
因此而不是
REPEAT ...
FOR ...
...
是的
您需要为
更改和
。每个迭代变量必须由它自己的for
子句引入。我仍然收到一个错误,您需要用for
更改和。每个迭代变量必须由它自己的for
子句引入。我仍然得到一个错误正确的列表是(01 2 5 12 29 70)不是(01 3 9 27 81 243),我用这个代码得到了两次错误我只更正了语法错误。如果算法有错误,你可以发布另一个问题,在那里你可以准确地显示你想要的。我仍然收到警告:循环:FOR子句应该出现在循环的主体之前,带有你发布的更正代码。repeat需要在FOR forms之后。谢谢,@RainerJoswig,我在SBCL中测试了第一个版本,该实现不会导致任何错误或警告。我现在已经更正了答案。正确的列表是(01252970)而不是(01392781243),并且我用这个代码得到了两次错误。我只更正了语法错误。如果算法有错误,你可以发布另一个问题,在那里你可以准确地显示你想要的。我仍然收到警告:循环:FOR子句应该出现在循环的主体之前,带有你发布的更正代码。repeat需要在FOR forms之后。谢谢,@RainerJoswig,我在SBCL中测试了第一个版本,该实现不会导致任何错误或警告。我现在已经更正了答案。我得到了以下错误警告:循环:重复之后,N被解释为类型规范***-LOOP:invalid关键字NIL After for我不知道您尝试执行的代码是什么。每个错误描述都应该有一个可复制的示例。for before repeat给出了错误警告:LOOP:After repeat,N被解释为类型规范***-LOOP:invalid关键字NIL After FORI写道您应该将repeat子句移动到for子句之后。在整个条款之后。不只是移动,而是在单词后重复。FOR子句描述了完整的FOR迭代。完整的重复从句毕竟需要完整的从句。非常感谢你,你认为我的计算有问题吗?因为当你说我得到不同的答案时,我得到了这个错误警告:循环:重复之后,N被解释为一个类型规范***-LOOP:fore之后的无效关键字NIL我不知道您试图执行的代码是什么。每个错误描述都应该有一个可复制的示例。for before repeat给出了错误警告:LOOP:After repeat,N被解释为类型规范***-LOOP:invalid关键字NIL After FORI写道您应该将repeat子句移动到for子句之后。在整个条款之后。不只是移动,而是在单词后重复。FOR子句描述了完整的FOR迭代。完整的重复从句毕竟需要完整的从句。非常感谢你,你认为我的计算有问题吗?因为当我按照你说的做的时候,我得到了不同的答案