gpt4 book ai didi

recursion - 方案无限递归

转载 作者:行者123 更新时间:2023-12-03 17:17:43 25 4
gpt4 key购买 nike

我正在编写自己的快速排序版本,但由于某种原因,我无法追踪到无限递归。

(define (quicksort-test list)
(cond
((null? list) '())
(else
(appending (quicksort-test (less-than-builder list (car list)))
(quicksort-test (geq-builder list (car list)))))))

Appending 是一个辅助函数,它只是将一个列表追加到另一个列表上,less-than-builder 和 geq-builder 是辅助函数,它们以列表和枢轴作为输入,然后构建一个包含所有小于枢轴和列表的列表分别大于或等于枢轴的所有事物。我认为问题出在我的 else 语句中,尽管出于某种原因我不明白为什么,可能是因为大脑炸了。

最佳答案

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

您需要删除枢轴元素 - 在 (cdr list) 上递归– 然后把它放回中间。

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

关于recursion - 方案无限递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35285497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com