【发布时间】:2015-08-13 14:57:28
【问题描述】:
我有这个 Python 代码,是选择排序算法的递归形式,但它不起作用,有人可以帮帮我吗?
def selection(lista):
return selection_aux(lista,0,len(lista))
def selection_aux(lista,i,n):
if i == n or lista[0]==None:
return lista
else:
num_menor = menor_f(lista,i,n,i)
temporal = lista[i]
lista[i] = num_menor
print(num_menor)
lista[num_menor] = temporal
return selection_aux(lista,i+1,n)
def menor_f(lista,j,n,menor):
if j == n:
return menor
if lista[j] < lista[menor]:
menor = j
return menor_f(lista,j+1,n,menor)
测试:
>>> selection([1,2,3])
输出
lista[num_menor] = temporal
TypeError: list indices must be integers, not NoneType
【问题讨论】:
-
能否请您添加更多关于它如何不工作的详细信息。比如,你期望什么输出,但你得到了什么输出,一些逻辑错误,或者类似的东西。
-
不仔细阅读你的代码,对于选择排序这样简单的事情来说,这不是太长太复杂了吗?
-
是的,但想法是使用尾递归来编写该算法!