0

因此该函数将采用 3 个元素一个数字项和一个列表。我想将该项目添加到列表中多少次,所以如果我这样做了 (pad-front 3 'a '(bc)) 它将返回 (aaabc) 作为列表。我想我想将该项目添加到列表中并且只是这样做 n 次我只是不确定如何让它做到这一点。

4

1 回答 1

1

在 Racket 中,这很容易使用内置程序:

(define (pad-front n x lst)
  (append                   ; append together both lists
   (build-list n (const x)) ; create a list with n repetitions of x
   lst))                    ; the list at the tail

(pad-front 3 'a '(b c))
=> '(a a a b c)

...但我猜你想从头开始实现它。思路与上面相同,但只使用原始程序;我会给你一些提示,以便你弄清楚细节。填空:

(define (pad-front n x lst)
  (if <???>            ; base case: if `n` is zero
      <???>            ; then return the tail list
      (cons <???>      ; else cons the element to be repeated
            (pad-front ; and advance the recursion
             <???>     ; subtract one unit from `n`
             x lst)))) ; pass along `x` and `lst`

请注意,诀窍是不断添加x元素,直到不再需要重复(换句话说:直到n为零)。那时,我们只需将尾部列表粘贴到最后,就完成了!

于 2013-09-26T21:34:54.713 回答