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:])
输入处理与输出适配实现思路
因为禁止使用循环,所有多行输入读取、多测试用例处理逻辑全部用递归实现:
- 一次性读取所有标准输入内容拆分多行,替代循环逐行读取的逻辑
- 先解析第一行的测试用例总数N,再通过递归函数迭代下标读取N组测试用例:每组先读取X值,再读取下一行拆分后的整数列表,调用
square_sum计算结果存入结果序列 - 所有测试用例计算完成后,将结果用换行符拼接为完整字符串一次性打印,满足"接收完全部输入再统一输出"的要求
完整可运行代码
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
相关产品推荐
相关产品推荐

