如何用递归对参数列表求和?

gbr*_*ish 1 python recursion

我正在尝试编写一个函数,它接受任意数量的参数,然后使用递归对它们求和(我没有使用内置的求和函数.我假设参数将是int.)

但我的基本情况并没有阻止它递归!任何提示?

def sum_all(*args):
 if args == ():
    return 0
 else:
    return args[0] + sum_all(args[1:])
Run Code Online (Sandbox Code Playgroud)

ACh*_*ion 7

您需要在递归中扩展args,并且not args足以进行测试:

def sum_all(*args):
    if not args:
        return 0
    return args[0] + sum_all(*args[1:])
                             ^
Run Code Online (Sandbox Code Playgroud)

Python 3还添加了一些允许您解压缩的新语法*args,例如:

def sum_all(*args):
    if not args:
        return 0
    a, *b = args
    return a + sum_all(*b)
Run Code Online (Sandbox Code Playgroud)