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