首页 > 解决方案 > *args in recursion: TypeError: unsupported operand type(s) for +: 'int' and 'tuple'

问题描述

我正在学习python。尝试在递归函数中使用 *args 作为参数(用于添加“n”个数字),但出现错误:以下是我的代码和错误:


def add(*n):
  if len(n) == 1:
    return n[0]
  else:
    sum =  n[len(n)-1] + add(n[:-1])
  return sum  


a = add(2,4,6)
print(a)

错误:

Traceback (most recent call last):
  File "/tmp/sessions/9d1de49c52e0e9b9/main.py", line 22, in <module>
    a = add(2,4,6)
  File "/tmp/sessions/9d1de49c52e0e9b9/main.py", line 18, in add
    sum =  n[len(n)-1] + add(n[:-1])
TypeError: unsupported operand type(s) for +: 'int' and 'tuple'

请解释我做错了什么

标签: pythonrecursionargs

解决方案


n[:-1]正在返回一个元组,以获取最后一个值添加使用add(n[-1]) 编辑:工作解决方案:


def add(*n):
    if len(n) == 1:
        return n[0]
    else:
        return n[-1] + add(*n[:-1])



推荐阅读