如何在Scheme中的列表中创建和添加元素?

时间:2010-03-14 21:05:30

标签: list scheme

我想定义一个以整数作为输入的方法,并动态创建所有下降整数的列表为零。我在调用n-1元素的方法时遇到了麻烦

3 个答案:

答案 0 :(得分:5)

这不是那么漂亮,但这应该有效,在DrScheme中进行测试。

(define (gen-list x )
  (if (= x 0) (list 0) (cons x (gen-list (- x 1)))))

答案 1 :(得分:3)

现在这是一个家庭作业问题,我认为尾递归版本可能是另一种选择。

  (define (gen-list x)  
           (let lp ((n 0) (ret '())) 
              (if (> n x) 
              ret 
              (lp (1+ n) (cons n ret)))))

答案 2 :(得分:0)

如果您正在使用PLT计划,那么理解库会让您相当整洁地执行此操作:

; natural -> (listof natural)
(define (list-to-zero start-num)
 (for/list ([i (in-range start-num 0 -1)])
  i))

只是递归形式的替代......