我正在尝试编写一个接受任意数量参数的函数,然后使用递归对它们求和(我不使用内置求和函数。我假设参数将是int。)
但是我的基础案例并没有阻止它再次递归!任何提示?
def sum_all(*args):
if args == ():
return 0
else:
return args[0] + sum_all(args[1:])
答案 0 :(得分:7)
您需要在递归中扩展args,并且not args
足以进行测试:
def sum_all(*args):
if not args:
return 0
return args[0] + sum_all(*args[1:])
^
Python 3还添加了一些新的语法,允许您解压缩*args
,例如:
def sum_all(*args):
if not args:
return 0
a, *b = args
return a + sum_all(*b)