类型错误:“int”类型的对象没有 len(),然后我将 list 传递给 func

问题描述 投票:0回答:1

我想编写一个递归函数来计算数组中元素的总和,但是当我将数组传递给函数时,它认为我传递了一个整数并写道没有 len() 函数

arr1 = [1, 2, 3, 4, 5, 6]

def rec_sum(arr):
    if len(arr) == 0:
        return 0
    else:
        return(arr[len(arr) - 1] + rec_sum(arr.pop(len(arr) - 1)))

print(rec_sum(arr1))
python python-3.x recursion arraylist typeerror
1个回答
0
投票

Python 的

list.pop()
方法会删除弹出的元素,因此您将一个整数传递给递归函数调用,而不是另一个列表。尝试使用列表切片:

arr1 = [1, 2, 3, 4, 5, 6]

def rec_sum(arr):
    if len(arr) == 0:
        return 0
    else:
        return(arr[len(arr) - 1] + rec_sum(arr[:len(arr)-1]))

print(rec_sum(arr1))

输出:

21
© www.soinside.com 2019 - 2024. All rights reserved.