返回列表的前n个

New*_*New 4 scheme list

如何返回n列表的第一个元素?这就是我所拥有的:

(define returns(lambda (list n)
 (cond ((null? list) '())
 (((!= (0) n) (- n 1)) (car list) (cons (car list) (returns (cdr list) n)))
        (else '()))))
Run Code Online (Sandbox Code Playgroud)

例子:

(returns '(5 4 5 2 1) 2)
(5 4)

(returns '(5 4 5 2 1) 3)
(5 4 5)
Run Code Online (Sandbox Code Playgroud)

Ósc*_*pez 10

你问的是这个take程序:

(define returns take)

(returns '(5 4 5 2 1) 2)
=> (5 4)

(returns '(5 4 5 2 1) 3)
=> (5 4 5)
Run Code Online (Sandbox Code Playgroud)

这看起来像家庭作业,所以我想你必须从头开始实施.一些提示,填写空白:

(define returns
  (lambda (lst n)
    (if <???>                     ; if n is zero
        <???>                     ; return the empty list
        (cons <???>               ; otherwise cons the first element of the list
              (returns <???>      ; advance the recursion over the list
                       <???>))))) ; subtract 1 from n
Run Code Online (Sandbox Code Playgroud)

别忘了测试它!