所以我正在学习使用buid-list
所以我写了一个函数:
(define (count-from n k)
(filter (lambda (n) (not(zero? n))) (build-list k (lambda (n) (add1 n)))))
传统的build-list从0开始,我想出了如何排除零, 但我坚持的是如何从特定点开始构建列表 喜欢(从7开始计数)来生成(列表7 8 9 10)而不是从1开始。
注意:我不想使用任何递归或帮助函数......我想知道我是否可以通过build-list和lambda实现我所寻求的。
答案 0 :(得分:3)
可以编写一个更简单的解决方案,如下所示:
(define (count-from n k)
(build-list (add1 (- k n))
(lambda (i) (+ i n))))
例如:
(count-from 7 10)
=> '(7 8 9 10)
答案 1 :(得分:0)
所以我设法弄清楚了,所以对于其他任何想知道的人,这就是我所做的:
(define (count-from n k)
(filter (lambda (y) (>= y n)) (filter (lambda (n) (not(zero? n)))
(build-list k (lambda (n) (add1 n))))))