方案无限递归

Edd*_*e V 5 recursion scheme racket

我正在编写自己的quicksort版本,并且由于某种原因导致无法进行无限递归。

(define (quicksort-test list)
  (cond
    ((null? list) '())
    (else
     (appending (quicksort-test (less-than-builder list (car list)))
                (quicksort-test (geq-builder list (car list)))))))
Run Code Online (Sandbox Code Playgroud)

追加是一个辅助函数,它仅将一个列表附加到另一个列表上,而小于构建器和geq-builder是辅助函数,它们将一个列表和一个枢轴作为输入,然后构建一个小于枢轴和列表的所有事物的列表。分别大于或等于枢轴的所有元素。我认为问题出在我的else语句中,尽管我看不出为什么由于某种原因(可能是由于脑筋急转弯)。

Jod*_*ast 1

构建大于或等于主元元素的每个元素的列表永远不会返回空列表,它只会下降到单个元素并一遍又一遍地不断调用自身,因为具有单个元素的列表总是大于或等于自身。

\n\n

您需要删除 \xe2\x80\x93 上的枢轴元素(cdr list)\xe2\x80\x93 递归,然后将其放回中间。

\n\n

感谢 molbdnilo 和 Eddie V 在评论中解决了这个问题

\n