Closed. This question is off-topic. It is not currently accepting answers. Learn more。
想改进这个问题吗Update the question所以堆栈溢出的值小于aa>。
两年前关闭。
我对口齿不清还很陌生,连脚都湿了都很难我敢肯定,一旦我有几个函数在工作,我将能够建立在它们之上,并处理更高阶的函数和更复杂的问题。
有人能在下面的代码中指出我的错误吗。
我怎么称呼这个我有一个函数我认为工作正常,但我无法获得调用它的语法谢谢你的帮助。
你的
应该是:
在第二个函数中,不需要使用
如果确实需要使用
使用
想改进这个问题吗Update the question所以堆栈溢出的值小于aa>。
两年前关闭。
我对口齿不清还很陌生,连脚都湿了都很难我敢肯定,一旦我有几个函数在工作,我将能够建立在它们之上,并处理更高阶的函数和更复杂的问题。
有人能在下面的代码中指出我的错误吗。
(defun indeHelper(A L N)
(cond (Null N) nil)
((= A (first L) (cons N (indeHelper A (rest L) (+ 1 N)))))
(t (indeHelper A (rest L) (+ 1 N))))
(defun inde(A L)
(funcall indeHelper(A L 1)))
我怎么称呼这个我有一个函数我认为工作正常,但我无法获得调用它的语法谢谢你的帮助。
最佳答案
你有很多语法问题。COND
的语法是:
(cond (test1 body1...)
(test2 body2...)
...)
你的
test1
应该是(null n)
,body1
应该是nil
,但你没有用括号将它们括起来然后你的其他测试和身体都在cond
之外,这在压痕上应该很明显。应该是:
(defun indeHelper(A L N)
(cond ((Null N) nil)
((= A (first L) (cons N (indeHelper A (rest L) (+ 1 N)))))
(t (indeHelper A (rest L) (+ 1 N)))))
在第二个函数中,不需要使用
funcall
当你调用一个动态确定的函数时(例如,当你编写高阶函数时),这是常用的,但是你只是调用一个已知的函数应该是:(defun inde(A L)
(indeHelper A L 1))
如果确实需要使用
funcall
,语法为:(funcall someVariable A L 1)
使用
funcall
时,参数不会放入嵌套列表,它们只是funcall
的普通参数。关于recursion - 调试简单的LISP功能。 ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43127783/
10-08 21:53