我遇到的问题是我有一个包含多边形坐标的列表,名为p1,p2,p3,p4。我需要递归地将它们添加到这样的新列表中((p1,p2)(p2,p3)(p3,p4)(p4,p1)。我有这个列表的开头(p1 p2 p3 p4) 。如何递归地将它们添加到新列表中?
答案 0 :(得分:0)
我不是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))