【问题标题】:make build-list start from a specific point使构建列表从特定点开始
【发布时间】:2016-01-26 01:01:55
【问题描述】:

所以我正在学习使用 buid-list

所以我写了一个函数:

(define (count-from n k)
(filter (lambda (n) (not(zero? n))) (build-list  k (lambda (n) (add1 n)))))

通常构建列表从 0 开始,我想出了如何排除零, 但我坚持的是如何让构建列表从特定点开始 喜欢 (count-from 7 10) 产生 (list 7 8 9 10) 而不是从 1 开始。

注意:我不想使用任何递归或辅助函数...我想知道我是否可以通过构建列表和 lambda 实现我所寻求的。

【问题讨论】:

    标签: scheme racket


    【解决方案1】:

    可以编写一个更简单的解决方案,如下所示:

    (define (count-from n k)
      (build-list (add1 (- k n))
                  (lambda (i) (+ i n))))
    

    例如:

    (count-from 7 10)
    => '(7 8 9 10)
    

    【讨论】:

      【解决方案2】:

      所以我设法弄清楚了,所以对于其他想知道的人来说,这就是我所做的:

      (define (count-from n k)
       (filter (lambda (y) (>= y n)) (filter (lambda (n) (not(zero? n))) 
         (build-list k (lambda (n) (add1 n))))))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-21
        • 1970-01-01
        • 1970-01-01
        • 2016-11-14
        • 2018-07-04
        • 2020-11-03
        • 1970-01-01
        • 2017-05-24
        相关资源
        最近更新 更多