小编toa*_*ast的帖子

基本LISP递归,枚举大于3的值

我需要一个递归的LISP函数,它枚举任何数字列表> 3的元素数量.我不允许使用let,loops或whiles,只能使用基本的CAR,CDR,SETQ,COND,CONS,APPEND,PROGN ,列表......

这是我对该功能的尝试:

(defun foo (lst) 
  (COND ((null lst) lst) 
    (T (IF (> (CAR lst) 3) 
      (1+ (foo (CDR lst)))
      (foo (CDR lst)) ) ) ) )
Run Code Online (Sandbox Code Playgroud)

函数调用:

(foo '(0 1 2 3 4 5 6))
Run Code Online (Sandbox Code Playgroud)

lisp recursion clisp

4
推荐指数
2
解决办法
692
查看次数

LISP车的最后一个元素?

LISP又把我弄糊涂......为什么我不能得到列表中最后一个元素的值?我有一个类似于此的列表设置:

(setq bar '(((1 2) 3 4 5)((6 7) 8 9 10)))
Run Code Online (Sandbox Code Playgroud)

现在我获得了4的回报:

(caddar bar)
Run Code Online (Sandbox Code Playgroud)

(5)返回:

(cdddar bar)
Run Code Online (Sandbox Code Playgroud)

但我不能得到5:

(cadddar bar)
Run Code Online (Sandbox Code Playgroud)

这是为什么 - 我怎样才能获得5的价值?

错误:

; Warning: This function is undefined:
;   CADDDAR

Error in KERNEL:%COERCE-TO-FUNCTION:  the function CADDDAR is undefined.
[Condition of type UNDEFINED-FUNCTION]
Run Code Online (Sandbox Code Playgroud)

lisp warnings clisp

2
推荐指数
1
解决办法
1456
查看次数

标签 统计

clisp ×2

lisp ×2

recursion ×1

warnings ×1