[英]List inside the scope of a recursive function is not updating
def largest_to_last(arr, index):
if(len(arr) == 1):
return
largest_to_last(arr[:-1], index-1)
if(arr[index-1] > arr[index]):
arr[index-1], arr[index] = arr[index], arr[index-1]
# print(arr)
return
arr = [1,4,2,8,5,6]
largest_to_last(arr, len(arr)-1)
print(arr)
我必須使用遞歸將最大的元素推送到數組的末尾。 我在這里找不到任何錯誤,有人可以幫忙嗎?
當您傳遞arr[:-1]
,會創建數組的副本,更改不會反映到原始列表中。 這是一個固定的,簡單的實現:
def sort(arr, index):
if(len(arr) == 2):
if(arr[index-1] > arr[index]):
arr[index-1], arr[index] = arr[index], arr[index-1]
return arr
arr = sort(arr[:index], index-1)+[arr[index]]
if(arr[index-1] > arr[index]):
arr[index-1], arr[index] = arr[index], arr[index-1]
return arr
arr = [1,4,2,8,5,6]
arr = sort(arr, len(arr)-1)
print(arr)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.