深耕专业教研,探索前沿技术
信息技术来源:诸暨市2026年5月高三诊断性考试

第 10 题

答案与解析

本题解析

参考答案

B

解题思路

甲用for循环累加,乙在长度为1时返回、否则用更短的数组调用自身,分别采用迭代与递归。两段程序功能相同的讨论以非空数组为前提。

程序分析

s = 0
for i in range(len(a)):
    s += a[i]
return s

s从0开始依次加上a[i],返回数组元素之和。range(len(a))规定了循环次数和下标范围。

if len(a) == 1:
    return a[len(a)-1]
else:
    return a[len(a)-1] + sum_re(a[:len(a)-1])

乙把求和分解为“末尾元素+前面各元素之和”。数组长度逐次减1,减至1时返回该元素;返回过程中再逐层加上各层的末尾元素。

选项分析

A

错误。选项把两种算法的名称颠倒。

B

正确。循环与函数自调用分别对应甲、乙的重复计算方式。

C

错误。甲的结束边界由range(len(a))给出,乙的结束边界是len(a)==1。

D

错误。乙需要保存递归调用状态,并通过切片反复创建新列表,增加内存占用和复制开销;甲只需循环累加。