You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python递归实现平方和的多行测试用例处理问询

非负整数平方和编程题实现指南

题目规则

  • 核心计算逻辑:计算给定整数序列中非负整数的平方和,所有负数值直接排除不参与计算
  • 输入格式规则:
    • 输入第一行为整数N(1 <= N <= 100),代表后续待处理的测试用例总数量
    • 每个测试用例第一行为整数X(0 < X <= 100),下一行包含X个空格分隔的整数Yn(取值范围-100 <= Yn <= 100)
  • 输出格式规则:
    • 必须接收完全部输入后再统一输出结果
    • 各测试用例的计算结果之间不得留空行
    • 统一从标准输入读取数据、向标准输出写入结果
  • Python实现额外强制约束:
    • 代码为单文件,必须包含main函数
    • 禁止使用for循环、while循环
    • 禁止使用任何列表/集合/字典推导式

现有核心实现说明

你已经完成的递归版平方和计算函数逻辑正确,代码如下:

def square_sum(arr):
    if not arr:
        return 0
    
    value = arr[0]
    if value < 0:
        value = 0
        
    return value**2 + square_sum(arr[1:])

输入处理与输出适配实现思路

因为禁止使用循环,所有多行输入读取、多测试用例处理逻辑全部用递归实现:

  1. 一次性读取所有标准输入内容拆分多行,替代循环逐行读取的逻辑
  2. 先解析第一行的测试用例总数N,再通过递归函数迭代下标读取N组测试用例:每组先读取X值,再读取下一行拆分后的整数列表,调用square_sum计算结果存入结果序列
  3. 所有测试用例计算完成后,将结果用换行符拼接为完整字符串一次性打印,满足"接收完全部输入再统一输出"的要求

完整可运行代码

import sys

def square_sum(arr):
    if not arr:
        return 0
    value = arr[0]
    if value < 0:
        value = 0
    return value ** 2 + square_sum(arr[1:])

def process_cases(lines, idx, remaining_cases, results):
    if remaining_cases == 0:
        return results
    # 读取当前测试用例的X值
    x = int(lines[idx].strip())
    # 读取下一行的整数列表
    yn_list = list(map(int, lines[idx+1].strip().split()))
    current_res = square_sum(yn_list)
    return process_cases(lines, idx + 2, remaining_cases - 1, results + [str(current_res)])

def main():
    all_lines = sys.stdin.read().splitlines()
    n = int(all_lines[0].strip())
    res_list = process_cases(all_lines, 1, n, [])
    print('\n'.join(res_list))

if __name__ == "__main__":
    main()

代码说明:所有遍历操作均通过递归函数传参迭代下标完成,没有使用任何禁止的循环语法和推导式;最终结果一次性打印,各结果间仅用换行分隔、无空行,完全符合题目格式要求。

内容的提问来源于stack exchange,提问作者Hamza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 14:09:18