0

我一直在研究 sicp 并尝试使用累积来编写“最后一个”函数

(define (accumulate f x xs)
  (if (null? xs)
      x
      (f (car xs)
         (accumulate f x (cdr xs)))))

 (last '(1 2 3 4 5)) ;;=> (5)

我试过了,但它不起作用

 (define (last seq)
   (accumulate (lambda (x y) x)
               '()
               seq))
4

1 回答 1

2

尝试这个:

(define (last lst)
  (accumulate (lambda (x y)
                (if (null? y)
                    (cons x y)
                    y))
              '() lst))
于 2013-01-29T19:28:47.717 回答