当前位置: 首页> 财经> 股票 > PTA - 嵌套列表求和

PTA - 嵌套列表求和

时间:2025/7/12 14:03:43来源:https://blog.csdn.net/2303_76707991/article/details/140477168 浏览次数:0次

使用递归函数对嵌套列表求和

函数接口定义:

def sumtree(L)

L是输入的嵌套列表。

裁判测试程序样例:

/* 请在这里填写答案 */L = eval(input())
print(sumtree(L))  # 调用函数

输入样例:

在这里给出一组输入。例如:

[1,[2,[3,4],5],6,[7,8]]

输出样例:

在这里给出相应的输出。例如:

36

我的答案:

方法一:
def sumtree(L):#global total        #为什么这里不用global也可以输出正确答案?total = 0for i in L:if (type(i) != list):total += ielse:total += sumtree(i)return total"""
原因:函数内部的局部变量: total 在 sumtree 函数内部被定义,它是一个局部变量。这意味着它只在函数内部有效,不会影响外部的任何变量。
递归调用: 当函数递归调用自身时,它会创建一个新的局部作用域。因此,每一次递归调用都会创建新的 total 变量,这些变量之间互不影响。
返回值: 递归调用 sumtree(i) 后,它会返回子列表的总和,并且这个返回值会被加到当前函数的 total 上。最终,函数返回最外层 total 的值
"""

 

方法二:
total = 0def sumtree(L):global total  # 声明 total 为全局变量for i in L:if (type(i) != list):total += ielse:sumtree(i)return total

 

方法三:
def sumtree(L):total = 0for element in L:if isinstance(element, list):total += sumtree(element)  # 递归调用else:total += elementreturn total

 

方法四:
def sumtree(L):total = 0stack = [L]  # 创建一个栈来存储待处理的列表while stack:current = stack.pop()  # 从栈顶取出一个列表for element in current:if isinstance(element, list):stack.append(element)  # 将子列表压入栈else:total += elementreturn total

测试结果:

这里不一一列举了,只列出部分提交结果

关键字:PTA - 嵌套列表求和

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: