【发布时间】:2010-03-14 21:05:29
【问题描述】:
我想定义一个将整数作为输入的方法,并动态创建一个所有从整数降到零的列表。我发现调用 n-1 元素的方法很麻烦
【问题讨论】:
我想定义一个将整数作为输入的方法,并动态创建一个所有从整数降到零的列表。我发现调用 n-1 元素的方法很麻烦
【问题讨论】:
虽然不是很漂亮,但应该可以,在 DrScheme 中测试过。
(define (gen-list x )
(if (= x 0) (list 0) (cons x (gen-list (- x 1)))))
【讨论】:
(cons x ...) 而不是(append (list x) ...) 吗?
既然这是一个家庭作业问题,我认为尾递归版本可能是一种替代方案。
(define (gen-list x)
(let lp ((n 0) (ret '()))
(if (> n x)
ret
(lp (1+ n) (cons n ret)))))
【讨论】:
如果您使用的是 PLT 方案,则推导式库可以让您轻松地做到这一点:
; natural -> (listof natural)
(define (list-to-zero start-num)
(for/list ([i (in-range start-num 0 -1)])
i))
只是递归形式的替代方案...
【讨论】: