簡體   English   中英

遞歸函數范圍內的列表未更新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM