eLisp 递归函数
eLisp recursive function
Lisp 新手。尝试将列表传递给递归函数并每次都对列表中的第一项执行某些操作。这是到目前为止的功能:
(setq colors '(red blue green yellow orange pink purple))
(defun my-function (x)
(if (> (length x) 0)
(let ((c (car x))
c)
(my-function x))))
不断收到错误信息,提示 x 是空元素。不知道该怎么做。
如果我重新格式化你的函数,也许你可以看到你做错了什么:
(defun my-function (x)
(if (> (length x) 0) ; do nothing if list is empty
(let ((c (car x)) ; bind c to (car x)
c) ; bind c to nil instead
; c is never used
(my-function x)))) ; recursively call function
; with unmodified x
; until the stack is blown
Keep getting an error saying x is a void element.
我想您是在用未定义的 x
调用 (my-function x)
,而不是用 (my-function colors)
将 colors
列表传递给它,但这肯定不是您唯一的问题。
Lisp 新手。尝试将列表传递给递归函数并每次都对列表中的第一项执行某些操作。这是到目前为止的功能:
(setq colors '(red blue green yellow orange pink purple))
(defun my-function (x)
(if (> (length x) 0)
(let ((c (car x))
c)
(my-function x))))
不断收到错误信息,提示 x 是空元素。不知道该怎么做。
如果我重新格式化你的函数,也许你可以看到你做错了什么:
(defun my-function (x)
(if (> (length x) 0) ; do nothing if list is empty
(let ((c (car x)) ; bind c to (car x)
c) ; bind c to nil instead
; c is never used
(my-function x)))) ; recursively call function
; with unmodified x
; until the stack is blown
Keep getting an error saying x is a void element.
我想您是在用未定义的 x
调用 (my-function x)
,而不是用 (my-function colors)
将 colors
列表传递给它,但这肯定不是您唯一的问题。