【问题标题】:How to create and add elements in a list in Scheme?如何在 Scheme 中的列表中创建和添加元素?
【发布时间】:2010-03-14 21:05:29
【问题描述】:

我想定义一个将整数作为输入的方法,并动态创建一个所有从整数降到零的列表。我发现调用 n-1 元素的方法很麻烦

【问题讨论】:

    标签: list scheme


    【解决方案1】:

    虽然不是很漂亮,但应该可以,在 DrScheme 中测试过。

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

    【讨论】:

    • 不能只是(cons x ...) 而不是(append (list x) ...) 吗?
    【解决方案2】:

    既然这是一个家庭作业问题,我认为尾递归版本可能是一种替代方案。

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

    【讨论】:

      【解决方案3】:

      如果您使用的是 PLT 方案,则推导式库可以让您轻松地做到这一点:

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

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

      【讨论】:

        猜你喜欢
        • 2020-08-26
        • 1970-01-01
        • 2018-07-09
        • 1970-01-01
        • 2013-11-14
        • 1970-01-01
        • 2010-11-10
        • 1970-01-01
        • 2011-04-30
        相关资源
        最近更新 更多