首页

2010年5月29日星期六

Scheme/Lisp 倒序排列

尾递归实现倒序排序:

(define (foo x)
(let loop((n x) (l '()))
       (if (null? (cdr n)) (append (list (car n)) l)
             (loop (cdr n) (append (list (car n))l)))))
如:(foo '(1 2 3 4 5)) => (5 4 3 2 1)

等价于它的一般性递归排序:
(define (f x)
(if (null? (cdr x))
      (list (car x))
            (append (f (cdr x)) (list (car x)))))
如:(f '(1 2 3 4 5)) => (5 4 3 2 1)

没有评论:

发表评论