首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >newLISP函数无效

newLISP函数无效
EN

Stack Overflow用户
提问于 2020-09-28 12:08:22
回答 1查看 45关注 0票数 1

我有一个家庭作业,我们需要用newLISP写一些函数。我遇到了一个问题,所以我举了一个问题的例子,看看是否有人可以帮助我。

问题是在递归函数结束后,它会返回一个ERR: invalid function :错误。无论我调用的function是什么,都会发生这种情况。

举个例子,我做了一个递归函数,递减一个数字,直到我们达到0。代码如下:

代码语言:javascript
复制
 (define (decrement num)
   (if (> num 0)
     (
       (println num)
       (decrement (- num 1))
     ) 
     
     (
       (println "done")
     )
   ) 
 )

每当我运行这个函数时,从数字10开始,输出如下所示:

代码语言:javascript
复制
> (decrement 10)
10
9
8
7
6
5
4
3
2
1
done
ERR: invalid function : ((println "done"))
called from user function (decrement (- num 1))
called from user function (decrement (- num 1))
called from user function (decrement (- num 1))
called from user function (decrement (- num 1))
called from user function (decrement (- num 1))
called from user function (decrement (- num 1))
called from user function (decrement (- num 1))
called from user function (decrement (- num 1))
called from user function (decrement (- num 1))
called from user function (decrement (- num 1))
called from user function (decrement 10)

我不明白为什么这会返回一个无效的函数错误。我对newLISP知之甚少,所以这可能是一个简单的问题。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-28 15:20:13

在Lisp中,您不能使用任意的圆括号将事物组合在一起。所以你应该这样做:

代码语言:javascript
复制
(define (decrement num)
   (if (> num 0)
      (begin
        (println num)
        (decrement (- num 1))
      )
      (println "done")
   ) 
 )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64095835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档