如何将指数应用于球拍中的内置列表

问题描述 投票:0回答:1

[enter image description here所以我知道如何使用构建列表在球拍中构建列表

例如:

(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

scheme racket
1个回答
1
投票

对于每一个,您都有指数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
© www.soinside.com 2019 - 2024. All rights reserved.