make build-list从特定点开始

时间:2016-01-26 01:01:56

标签: scheme racket

所以我正在学习使用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实现我所寻求的。

2 个答案:

答案 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))))))