递归添加到列表

时间:2017-10-26 12:02:14

标签: scheme racket

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

1 个答案:

答案 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))