0

请问,我的代码有什么不好的?我该如何修改?

(define pivot (lambda (l)
  (cond ((null? l) 'done)
    ((null? (cdr l)) 'done)
        ((<= (car l) (cadr l)) (pivot (cdr l)))
        (#t (car l)))))

(define (quicksort l)
 (let ((piv (pivot l)))
   (if (equal? piv 'done) l
     (let ((parts (partition piv l () ())))
       (append (quicksort (car parts)) 
               (quicksort (cadr parts)))))))
4

1 回答 1

3

一些 Scheme 解释器定义了一个partition过程,但它接收一组不同的参数,所以我假设您定义了自己的版本。quicksort问题中显示的实现可能有效,但该partition过程几乎肯定是错误的。没有代码很难说...

于 2012-12-20T14:03:09.600 回答