【问题标题】:Why is my function to Reverse an array not working?为什么我的反转数组功能不起作用?
【发布时间】:2021-04-12 02:34:13
【问题描述】:

编写了一个递归函数来反转一个数组,但它产生了相同的数组。为什么?

def reverseArray(arr):
    l=0
    r=len(arr)-1
    if l<r:
        arr[l],arr[r] = arr[r], arr[l]
        reverseArray(arr[l+1:r])

if __name__ == "__main__":
    arr = [-1, -1, 6, 1, 9, 3, 2, -1, 4, -1]
    reverseArray(arr)
    print(arr)

【问题讨论】:

  • 为什么不只是print(arr[::-1])arr.reverse()

标签: arrays python-3.x recursion


【解决方案1】:

arr[l+1:r] 创建原始数组的副本。所以你的原始数组会是一样的。

【讨论】:

    【解决方案2】:

    如果您对递归方法感兴趣,可以使用

    def reverse_helper(A, start, end):
        if start >= end:
            return
        A[start], A[end] = A[end], A[start]
        reverse_helper(A, start+1, end-1)
    
    def reverse(A):
        return reverse_helper(A,0,len(A)-1)
    

    或者

    def reverse(t):
      if not t:
        return []
      else
        return [ *reverse(t[1:]), t[0] ]
    

    【讨论】:

      猜你喜欢
      • 2023-01-30
      • 1970-01-01
      • 2021-09-15
      • 2014-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多