python - *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'
请解释我做错了什么
解决方案
n[:-1]
正在返回一个元组,以获取最后一个值添加使用add(n[-1])
编辑:工作解决方案:
def add(*n):
if len(n) == 1:
return n[0]
else:
return n[-1] + add(*n[:-1])
推荐阅读
- css - 切换按钮在我的导航栏中无效
- excel - 设置表中的值
- python - flask_sqlalchemy 无法返回所有行
- c# - Umbraco Mediaservice 内存不足异常但文件已上传
- mongodb - Mongoose Query 当名称有任何一组单词时按名称搜索文档,无论顺序如何
- swiftui - SwiftUI 中的 UIButton 导航推送等价物是什么
- r - 从 %>% 管道运算符获取倒数第二个输入
- arrays - 使用公式删除特定单词“removeword”
- maven - Gitlab CI 使用 maven-compiler-plugin 出错
- sql - Answers in Question的外键可能会导致多重级联?