Python:返回不在递归算法中执行
我正在研究一种快速选择算法。我不完全确定我的算法是否正常工作,但我认为这与我看到的行为无关 我有一个带条件检查的递归算法,用于退出算法,返回打印最终quickselect解决方案。条件被触发,但我一直没有得到任何返回。所以我在返回之前添加了一个打印语句。print语句打印该值,但返回值仍然不返回任何值 这是我的密码。条件在第11行:Python:返回不在递归算法中执行,python,algorithm,recursion,return,Python,Algorithm,Recursion,Return,我正在研究一种快速选择算法。我不完全确定我的算法是否正常工作,但我认为这与我看到的行为无关 我有一个带条件检查的递归算法,用于退出算法,返回打印最终quickselect解决方案。条件被触发,但我一直没有得到任何返回。所以我在返回之前添加了一个打印语句。print语句打印该值,但返回值仍然不返回任何值 这是我的密码。条件在第11行: #!/usr/bin/env python from random import randint def rSelect(arr, k, left=0, righ
#!/usr/bin/env python
from random import randint
def rSelect(arr, k, left=0, right=None):
if right == None:
right = len(arr)
if right == 1:
return arr[k]
else:
j = partition(a,left, right)
if j == k:
print "arr: %s" % arr
print "j: %s" % j
print "arr[j]: %s" % arr[j]
return arr[j]
if j > k:
rSelect(arr, k, left, j)
if j < k:
rSelect(arr, k-j, j+1, right)
def partition(a, l, r):
""" randomized pivot """
p = randint(l,r-1)
a[l], a[p] = a[p], a[l]
i = l + 1
for j in range(l+1, r):
if a[j] < a[l]:
a[j], a[i] = a[i], a[j]
i += 1
a[l], a[i-1] = a[i-1], a[l]
return i-1
a = [ 5,4,3,2,1 ]
print rSelect(a, 1)
#/usr/bin/env python
从随机导入randint
def R选择(arr,k,左=0,右=无):
如果右==无:
右=长(arr)
如果右==1:
返回arr[k]
其他:
j=分区(a、左、右)
如果j==k:
打印“arr:%s”%arr
打印“j:%s”%j
打印“arr[j]:%s”%arr[j]
返回arr[j]
如果j>k:
R选择(arr,k,左,j)
如果j
另外,您的脚本工作不正常,我将列表中的2改为16,结果不正确。另请参阅,还有更多内容。谢谢TigerHawkT3。我现在明白怎么回事了。