|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
想搞一个计算嵌套列表所有元素的和的程序。
def sumtree(x):
total = 0
for i in x:
if type(i) is not list:
total = total + i
else:
return sumtree(i)
return total
结果运行出错。运行结果:
sumtree([1,2,[3,4,5]])
1
请问问题出在哪?
问题出在递归调用 sumtree(i) 的位置不正确。在当前的代码中,当遇到嵌套列表时,会立即返回递归调用的结果,而不会继续遍历当前列表的其他元素。这导致只计算了嵌套列表中的第一个元素。
为了解决这个问题,你需要将 return sumtree(i) 移动到循环结束后,以确保遍历完整个列表。修改后的代码如下:
- def sumtree(x):
- total = 0
- for i in x:
- if type(i) is not list:
- total = total + i
- else:
- total = total + sumtree(i)
- return total
复制代码
现在,当遇到嵌套列表时,会继续遍历该列表的其他元素,并将它们的值累加到总和中。重新运行代码后,应该得到正确的结果:
- sumtree([1,2,[3,4,5]])
- 15
复制代码
注意:这个函数假设嵌套列表中只包含整数类型的元素。如果列表中包含其他类型的元素,可能会导致类型错误。
|
|