我正在尝试创建一个递归函数,将最后两个数字相加,直到没有剩余的数字。例如:
sumDigits(239)
相当于:
2+3+9=14
这很困难,因为输入必须是一个整数,不转换它就不能切片。我决定尝试将它转换为一个列表,因为我认为pop()方法对此很有用。似乎这种方法不起作用。有什么建议吗?你知道吗
执行:
>>> sumDigits('234')
9
>>> sumDigits('2343436432424')
8
>>>
代码:
def sumDigits(n):
l1 = list(str(n))
if len(l1) > 1:
a = int(l1.pop())
b = int(l1.pop())
l1.append(str(a+b))
return sumDigits(int(''.join(l1)))
else:
return n
您应该传递整数列表,而不是传递字符串:
你的方法的问题是:
'23434364324|24|'
->;'2343436432|46|'
->;'2343436432 | 10'
现在pop将返回
0
和1
,而不是您所期望的2
和10
。因此输出错误。你知道吗简单解决方案:
既然每个人似乎都在为你解决家庭作业,下面是一个优雅的递归解决方案。你知道吗
有了
reduce()
这样的功能工具,问题就可以通过相关问题 更多 >
编程相关推荐