gpt4 book ai didi

python - python中的递归排序

转载 作者:太空宇宙 更新时间:2023-11-04 01:22:53 24 4
gpt4 key购买 nike

我正在尝试在 python 中递归地运行排序函数。我有一个开始所有内容的空列表,但每次我尝试打印列表时,我都会得到一个空列表。这是我的代码。任何帮助将不胜感激

def parse(list):
newParse = []
if len(list) == 0:
return newParse
else:

x = min(list)

list.remove(x)
newParse.append(x)

return sort(list)

最佳答案

newParse 的值不会在函数调用之间保留;您将其设置为等于 [](好吧,您正在创建一个值为 [] 的新变量)。

因为你唯一返回的时间是

newParse = []
if len(list) == 0:
return newParse`

您将始终返回 [],因为那是当时 newParse 的值。

因为您正在递归执行此操作,所以您重新调用函数,而不保留函数自身的状态。花点时间考虑一下这对您的代码的影响。

不是初始化 newParse = [],而是添加一个可选参数 newParse 默认为一个虚假值,并设置 newParse = [] 如果您收到 newParse 的虚假值。否则,您实际上每次都会获得相同的列表(即列表对象的内容正在发生变化)。 并且 newParse 在您的尾部调用中完成。

您似乎还遇到这样的问题,即您的定义和所谓的递归调用引用了不同的函数。

def sort(list, newParse = None):
if newParse is None:
newParse = []
if len(list) == 0:
return newParse
else:
x = min(list)
list.remove(x)
newParse.append(x)
return sort(list, newParse)

关于python - python中的递归排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20034666/

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