我想在冒泡排序算法中使用递归,但结果显示函数“bu_sort”没有被递归使用。我已经在这个问题上工作了很长时间,真的不知道问题在哪里。为什么我不能在冒泡排序中执行递归
def bu_sort(input_list):
print("start")
length = len(input_list)
print(length)
for i in range(length - 2):
print("times")
if input_list[i] > input_list[i + 1]:
tem = input_list[i + 1]
input_list[i + 1] = input_list[i]
input_list[i] = tem
bu_sort(input_list[:length - 2])
test1 = [7,4,2,8,5,1]
bu_sort(test1)
print(test1)
以下为输出,只打印一个“启动”,所以我知道该功能已经执行仅一次
test1 = [7,4,2,8,5,1]
bu_sort(test1)
start
6
times
times
times
times
print(test1)
[4, 2, 7, 5, 8, 1]
你确定这是你正在运行的确切的代码?我得到'RuntimeError:最大递归深度超过',这是有道理的,因为你的递归永远不会终止。 – Thomas
我认为OP缺少一个基本案例。做一些像'if len(input_list)<2:return'。我能够通过在该函数内添加该块来复制OP的输出。 – bourbaki4481472