【问题标题】:Recursively adding to a list递归添加到列表
【发布时间】:2017-10-26 12:02:13
【问题描述】:

我遇到的问题是我有一个列表,其中包含一个名为 p1、p2、p3、p4 的多边形角的坐标。我需要将它们递归地添加到这样的新列表中((p1,p2)(p2,p3)(p3,p4)(p4,p1)。我有这个列表开始于(p1 p2 p3 p4) . 如何递归地将它们添加到新列表中?

【问题讨论】:

  • 你试过了吗?包括一些不起作用的代码。 (也许在这样做的时候,你实际上会让代码工作:))

标签: scheme racket


【解决方案1】:

我不是 Racket 方面的专家,所以对这个解决方案持保留态度。您可以将 list 的第一个值附加到 end,并通过递归计算对。

 #lang racket

(define (pair-list l)
  (match l
    [(cons a (cons b '())) (cons (cons a b) '())]
    [(cons a (cons b t)) (cons (cons a b) (pair-list (cons b t)))]))

(define (compute-values l)
  (pair-list (append l (cons (first l) '()))))

(compute-values (list 1 2 3 4))
'((1 . 2) (2 . 3) (3 . 4) (4 . 1))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 2012-10-25
    • 2022-10-13
    • 2016-10-21
    • 1970-01-01
    相关资源
    最近更新 更多