我试图定义这个函数,它接受多个整数并保留那些与0不同的函数。它不起作用,显然,递归调用(filter $?tail)
与参数列表不匹配。可以在CLIPS中完成吗?
(deffunction filter (?head $?tail)
(if (= (length $?tail) 0) then
(if (!= ?head 0) then (return ?head))
(return $?tail))
(if (= ?head 0) then
(return (filter $?tail)))
(bind $?result ?head (filter $?tail))
(return $?result)
)
答案 0 :(得分:0)
使用2个参数filter(?head $?tail)
声明函数过滤器,但只用一个(filter $?tail)
是否需要递归?使用函数delete-member$
:
(delete-member$ $?list 0)
示例:
CLIPS> (delete-member$ (create$ 6 7 0 8 0 7) 0)
(6 7 8 7)
CLIPS>