我试图定义一个接受字母列表的函数,并返回删除了最后一个元素的列表。我是一个相当新的计划,所以我不确定如果不在函数内部创建变量就可以实现这一点。 到目前为止,我已经开始:
define funct (lambda (x)
(let (list '() )
(if ( < (length x) 2 ) list (append ( list (car x))
我是否可以像这样打一个递归调用:
(if ( < (length x) 2 ) list (append ( list (car x)) (set x (cdr x)) lambda (x))
或者这是非常错误的?
答案 0 :(得分:1)
非常错误,是的。
推理如下:
在代码中:
(define funct
(lambda (lst)
(if (or (null? lst) (null? (cdr lst)))
'()
(cons (car lst) (funct (cdr lst))))))
测试:
> (funct '())
'()
> (funct '(a))
'()
> (funct '(a b))
'(a)
> (funct '(a b c))
'(a b)
> (funct '(a b c d))
'(a b c)