例如:
(build-list 2 add1) => (list 1 2)
但是,如果我想将指数应用于列表,并且列表以某个数字结尾,我将如何去做。
例如:指数3,它将从0开始并在3结束,并将其应用于构建列表中的1和2。
1^0 * 1^1 * 1^2 * 1^3
2^0 * 2^1 * 2^2 * 2^3
我大致拥有。
(define (list-of-numbers m n)
(apply * (build-list (get m) (lambda (n) (expt n n)))))
(define (get m)
(build-list m add1))
输出应为:
(list-of-numbers 2 3) ⇒ (list 1 64)
1 × 1 × 1 × 1 = 1
1 × 2 × 4 × 8 = 64
对于每一个,您都有指数0..3,可以通过build-list 4
获得
> (build-list 4 (lambda (n) n))
(list 0 1 2 3)
然后您可以将expt
调用放入lambda内>
> (build-list 4 (lambda (n) (expt 2 n))) (list 1 2 4 8)
如果您想将列表中的元素相乘,可以使用
apply *
> (apply * (build-list 4 (lambda (n) (expt 2 n))))
64