【发布时间】:2017-10-26 12:02:13
【问题描述】:
我遇到的问题是我有一个列表,其中包含一个名为 p1、p2、p3、p4 的多边形角的坐标。我需要将它们递归地添加到这样的新列表中((p1,p2)(p2,p3)(p3,p4)(p4,p1)。我有这个列表开始于(p1 p2 p3 p4) . 如何递归地将它们添加到新列表中?
【问题讨论】:
-
你试过了吗?包括一些不起作用的代码。 (也许在这样做的时候,你实际上会让代码工作:))
我遇到的问题是我有一个列表,其中包含一个名为 p1、p2、p3、p4 的多边形角的坐标。我需要将它们递归地添加到这样的新列表中((p1,p2)(p2,p3)(p3,p4)(p4,p1)。我有这个列表开始于(p1 p2 p3 p4) . 如何递归地将它们添加到新列表中?
【问题讨论】:
我不是 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))
【讨论】: