我想在冒泡排序算法中使用遞歸,但結果顯示函數「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