【发布时间】:2023-04-01 19:29:01
【问题描述】:
我想将下面的代码转换为尾递归过程(它需要一个数字'n'和一个列表'items'并返回列表的前n个项目)。
(define (take n items)
(if (= 0 n)
'()
(if (< (length items) n)
items
(cons (car items)
(take (- n 1) (cdr items))))))
我已尝试使用此代码
(define (take n items)
(define (iter-lst n lst)
(if (null? n)
lst
(iter-lst (- n 1) (cdr lst)))
(iter-lst 0 items)))
(take 4 '(1 2 3 4 5))
【问题讨论】: