信息技术来源:浙江七校2026年普通高等学校招生全国统一考试模拟考试
第 10 题
答案与解析
本题解析
参考答案
A
解题思路
函数在a[x]≠x时调用自身f(a[x]);当a[x]=x时不再递归,直接返回a[x]。递归沿数组值所指向的下标继续访问,本题给定数组中的这条访问路径能够到达出口。
程序分析
def f(x):
if a[x] != x:
a[x] = f(a[x])
return a[x]执行a[x] = f(a[x])时,要先完成右侧的递归调用,再把返回值写入当前层的a[x]。随后return a[x]将这个值继续返回上一层。因此,递归到达出口后,返回值会逐层回传,并写入沿途访问过的数组元素;未被访问的元素不受影响。
执行f(0)时,递归调用路径为f(0)→f(1)→f(3)→f(4),因为原数组中a[0]=1、a[1]=3、a[3]=4。到达f(4)时,a[4]=4,满足出口条件,返回4。
返回过程如下:
| 返回到的调用 | 执行的赋值 | 本层返回值 |
|---|---|---|
| f(3) | a[3]=4 | 4 |
| f(1) | a[1]=4 | 4 |
| f(0) | a[0]=4 | 4 |
a[2]和a[5]未被访问,仍分别为1、5。因此f(0)返回4,数组变为[4,4,1,4,4,5]。
问题反馈
解析有疑问或显示异常?请先复制题目信息,再打开反馈表单填写。
题目编号:2026_05_G3_zhejiangqixiao_q010
