【发布时间】:2012-12-25 04:13:49
【问题描述】:
我想用Scheme语言高效地创建一个特殊的列表。例如:
函数名称:
make-list
参数:max(make-list max) -> (1 2 3 4 5 6 7 ... max)
我可以使用递归方法完成这项任务。
#lang racket
(define (make-list max)
(define lst '())
(define count 1)
(make-list-helper lst max count))
(define (make-list-helper lst max count)
(cond
[(> count max) lst]
[else
(set! lst (append lst (list count)))
(make-list-helper lst max (add1 count)]))
但是,这种方法可以认为是低级的。我不知道如何提高其制作清单的效率。谁能帮帮我?
【问题讨论】:
-
我知道它可能不适用于你的情况,但你可以看看 Lazy Racket,因为在真正需要它们之前不必构建这些列表。跨度>
-
顺便说一句,没有充分的理由在您的代码中使用
set!。
标签: performance list recursion scheme racket