List 将单个元素添加到列表中直到某一点

List 将单个元素添加到列表中直到某一点,list,recursion,racket,List,Recursion,Racket,我想做一个函数,给定一个列表和一个自然数,在列表上加零,使列表的长度等于自然数。这样做的有效方法是什么?不是让每个元素都为零,而是做它应该做的事情 (define (zero-list loz alon) (cond [(empty? loz) empty] [(= (-(length loz) 1) alon) (cons 0 loz)] [else (cons 0 (zero-list (rest loz)))])) 例如: (零列表(列表1 2 3)5))->

我想做一个函数,给定一个列表和一个自然数,在列表上加零,使列表的长度等于自然数。这样做的有效方法是什么?不是让每个元素都为零,而是做它应该做的事情

(define (zero-list loz alon)
  (cond
    [(empty? loz) empty]
    [(= (-(length loz) 1) alon) (cons 0 loz)]
    [else (cons 0 (zero-list (rest loz)))]))
例如:
(零列表(列表1 2 3)5))->(列表0 0)
so(长度(列表1 2 3))+(长度(列表0))=5

用于生成具有适当数量0的列表(即输入列表的数量和长度之间的差):

(define (zero-list l n) 
  (make-list (- n (length l)) 0))

(zero-list (list 1 2 3) 5) ; -> (list 0 0)