PTA - 嵌套列表求和

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

函数接口定义:

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 = 0
    
    for i in L:
        if (type(i) != list):
            total += i
        else:
            total += sumtree(i)
            
    return total

"""
原因:

函数内部的局部变量: total 在 sumtree 函数内部被定义,它是一个局部变量。这意味着它只在函数内部有效,不会影响外部的任何变量。
递归调用: 当函数递归调用自身时,它会创建一个新的局部作用域。因此,每一次递归调用都会创建新的 total 变量,这些变量之间互不影响。
返回值: 递归调用 sumtree(i) 后,它会返回子列表的总和,并且这个返回值会被加到当前函数的 total 上。最终,函数返回最外层 total 的值
"""

 

方法二:
total = 0

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

 

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

 

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

测试结果:

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

相关推荐

  1. PTA L1-009 N个数求和(C++)

    2024-07-17 08:18:02       35 阅读
  2. PTA-列出所有祖先结点

    2024-07-17 08:18:02       45 阅读
  3. PTA:7-184 通过嵌套循环输出二维矩阵

    2024-07-17 08:18:02       29 阅读
  4. 求和...

    2024-07-17 08:18:02       43 阅读
  5. 6.5-1Python之列表嵌套字典的使用

    2024-07-17 08:18:02       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 08:18:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 08:18:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 08:18:02       58 阅读
  4. Python语言-面向对象

    2024-07-17 08:18:02       69 阅读

热门阅读

  1. redux执行流程

    2024-07-17 08:18:02       26 阅读
  2. 网络安全----web安全防范

    2024-07-17 08:18:02       22 阅读
  3. R语言学习笔记9-数据过滤-分组-融合

    2024-07-17 08:18:02       22 阅读
  4. 实战:Spring Boot与Apache CXF构建企业级服务SOAP

    2024-07-17 08:18:02       24 阅读
  5. Transformer中Decoder的计算过程及各部分维度变化

    2024-07-17 08:18:02       25 阅读
  6. Docker

    2024-07-17 08:18:02       24 阅读
  7. ODrive学习笔记四——编码器流

    2024-07-17 08:18:02       31 阅读
  8. 基于深度学习的机器人控制

    2024-07-17 08:18:02       26 阅读
  9. C++ ‘##’ 运算符使用

    2024-07-17 08:18:02       20 阅读
  10. python3多线程用途和场景

    2024-07-17 08:18:02       20 阅读
  11. 2024年还能入局网络安全吗?

    2024-07-17 08:18:02       22 阅读
  12. 树莓派docker自制镜像

    2024-07-17 08:18:02       23 阅读