求和函数的递归实现的时空复杂度

任何人都可以建议以下代码的时空复杂性吗? 我知道时间复杂度应为O(n),因为该函数被调用了n次,并且空间复杂度至少为O(n)(由于堆栈空间),但是确实将a [1:]传递给函数会导致空间复杂度增加了吗?我认为a [1:]将在省略第一个元素的同时创建一个new的副本,对吗?

def sum(a):
    if len(a) == 1:
        return a[0]
    return a[0] + sum(a[1:])