第03讲 函数与算法 (复习讲义)(浙江专用)2027年高考信息技术一轮复习讲练测

2026-09-23
| 2份
| 33页
| 7人阅读
| 0人下载
精品

内容正文:

第03讲 函数与算法 内容导航 01 命题透视·考情前瞻 对标素养,研判高考命题趋势 02 思维建模·脉络梳理 搭建知识框架,构建系统思维 03 考点精讲·靶向突破 拆解核心考点,归纳解题范式 考点一 自定义函数与模块导入 知识解构 知识点1 自定义函数与模块导入 知识点2 参数传递(类值传递、类引用传递) 知识点 3 模块导入的多种方式 考向破译 考向1 函数调用、return、局部变量辨析 考向2 可变 / 不可变对象参数传递推演 考向3 模块导入的多种方式 考点二 解析算法与枚举算法思想 知识解构 知识点1 解析算法 知识点2 枚举算法(三要素、程序框架) 考向破译 考向1 解析算法数学公式转换为代码填空 考向2 枚举算法框架理解与代码填空 考点三 迭代与递归算法 知识解构 知识点1迭代算法 知识点2 递归算法:递归定义、基线条件、递归调用、调用栈 考向破译 考向1 递归调用结果手动推演(选择题必练) 考向2 追踪递归调用栈与多层局部变量变化 考向 3 递归算法代码填空 考点四 时间复杂度初步估算 知识解构 知识点1 大O表示法,常见复杂度阶 知识点2 简单循环、递归的时间复杂度估算 考向破译 考向1 根据代码片段判断时间复杂度   考向 2 结合算法特征辨析复杂度阶 04 真题溯源·考向感知 溯源真题逻辑,感知高考考向 命题透视·考情前瞻 ——对标素养,研判高考命题趋势 考点要求 考查形式 2026年 2025年 2024年 自定义函数、参数传递、模块导入 þ选择题 非选择题 浙江卷 1 月 T8,2 分 浙江卷 6 月 T14,填空 浙江卷 6 月 T10,2分 浙江卷 1 月 T11,2分 解析、枚举算法思想与代码实现 选择题 非选择题 浙江卷 6 月 T15,9分 浙江卷 6 月 T13,填空 浙江卷 1 月 T15,9分 迭代、递归调用结果推演、调用栈追踪 þ选择题 非选择题 浙江卷 1 月 T12,2分 浙江卷 6 月 T12,2分 浙江卷 6 月 T11,2分 时间复杂度初步估算 þ选择题 非选择题 浙江卷 6 月 T7,2分 浙江卷 1 月 T8,2分 浙江卷 6 月 T9,2分 考情分析: 1.浙江信息技术选考中,函数与算法属于核心高频模块。选择题侧重:递归调用结果判断、参数传递带来变量变化辨析、时间复杂度判断;非选择题常结合真实情境,把解析 / 枚举算法嵌入函数,考查代码填空、读懂递归执行流程。 2.从命题思路上看, (1)自定义函数重点考查实参与形参、可变对象 / 不可变对象参数传递效果(Python 无纯粹值 / 引用传递,表现出类值、类引用效果),经常结合列表、二维列表考查函数内修改是否影响外部变量。 (2)解析算法重在公式转化为代码;枚举算法重在确定枚举范围、设置判断条件,常考循环 + 分支框架。 (3)递归是难点:必须识别基线条件;读懂调用栈 “先调用后返回,后进先出”;区分递归与迭代;注意递归深度限制。 (4)时间复杂度只要求初步估算,掌握常见 O (1)、O (n)、O (log n)、O (n²),去掉常数、低阶项,只保留最高阶。 复习目标: 1. 掌握自定义函数 def 语法、return 返回值;分清形参实参,理解可变 / 不可变对象作为参数时的传递效果;掌握 import 模块多种写法。 2. 区分解析算法与枚举算法,能把数学公式转解析代码,能写出枚举算法完整框架(确定范围 + 判断条件)。 3. 理解迭代与递归;能手动追踪递归调用栈、多层递归局部变量变化,识别基线条件,区分递归终止与死递归。 4. 会简单估算循环、递归的时间复杂度大 O 阶。 思维建模·脉络梳理 ——搭建知识框架,构建系统思维 考点精讲·靶向突破 ——拆解核心考点,归纳解题范式 考点一 自定义函数与模块导入 知●识●解●构 知识点1 自定义函数的定义、调用、返回值 1. 定义语法: · 形参:定义函数括号内变量;实参:调用函数传入的实际数据。 · return作用:①结束函数运行; ②把结果返回给调用处;一条return执行后,后续代码不再运行。 · 函数内部变量是局部变量,默认不能直接在函数外部访问。 2. 示例: 知识点2 参数传递(类值传递、类引用传递) Python语言本身是对象引用传递,根据对象可变与否表现两种效果。 1. 不可变对象(int、float、字符串str、元组tuple):类值传递效果 函数内部对形参重新赋值,不会改变外部实参。 2. 可变对象(列表list、字典dict):类引用传递效果 如果修改对象内部元素,外部原始对象同步改变; ⚠注意:如果给形参整体重新赋值(如lst=[1,2]),是让形参指向新列表,不会改变外部原列表。 示例1(修改列表内部元素,外部跟着变) 示例2(形参整体赋值,不改变外部) 知识点3 模块导入 导入写法 说明 使用方式 import random 导入整个random模块 random.randint(1,10) from random import randint 只导入randint函数 直接写randint(1,10) from random import * 导入模块全部内容,不推荐 直接调用函数 选考常考:import random、import math。 考●向●破●译 考向1 函数调用、return、局部变量辨析(选择题) 例1 (2025宁波一模 第10题) 有如下Python程序段: from random import randint def fun(a,x): r=0 for i in range(len(a)): if a[i]%x != 0: a[r]=a[i] r+=1 return a[:r] a=[3,5,16,9,8,5] t=randint(3,5) a=fun(a,t) 则运行程序后,a的值不可能是( ) A. [5,16,8,5] B. [3,5,9,5] C. [3,5,16,9] s D. [3,16,9,8] 例2(Z20 名校联盟 20252026 学年高三上第二次联考 第 9 题) 关于 Python 函数,下列说法正确的是() A. 没有return语句的函数调用后会报错 B. return返回多个值时必须使用列表进行包裹 C. 函数内部定义的局部变量,不能在函数外部直接使用 D. 调用函数时实参只能使用变量,不能使用表达式 考向2 可变对象参数传递推演(选择题) 例1(2026 届宁波市高三二模 第 10 题) 有如下 Python 程序段: def func(x, arr): x = x * 2 arr[1] += x num = 6 ls = [2, 5, 7] func(num, ls) print(num, ls[1]) 执行该程序段后,输出的结果是() A.6 17  B.12 17 C.6 11 D.12 11 考向3 函数相关代码填空(非选择题) 例1【七彩阳光 20252026 学年高三返校联考 第 13 题节选】 编写函数 calc_sum,计算 [a,b] 闭区间所有整数的和。 def calc_sum(a,b): s=0 for i in range(a,b+1): s += i ____________ res=calc_sum(2,10) print(res) 划线处应填入的语句为________。 考点二 解析算法与枚举算法思想 知识点1 解析算法 解析算法:直接使用数学公式、关系式,把已知量代入公式直接求解,不需要遍历全部可能。 · 核心:找到问题数学表达式,翻译为Python代码。 示例:已知三边a,b,c求三角形面积(海伦公式) 知识点2 枚举算法 枚举算法:把问题所有可能的解,不重不漏全部列举出来,用条件判断筛选符合条件的正确解。 1.枚举三要素: (1)枚举对象:要尝试的变量; (2)枚举范围:变量取值区间,用for/while循环实现; (3)判断条件:if判断,筛选真正满足题意的解。 2.基础框架模板: 3.示例:百钱买百鸡,公鸡5元,母鸡3元,小鸡1元3只,100元买100只鸡。 辨析:解析靠公式直接算;枚举靠循环逐个试候选解。 考●向●破●译 考向1 解析算法公式转代码(填空) 例1 (2024宁波一模 第10题) 定义如下函数: def tob(n): if n==0: return "" else: return tob(n//2)+str(1-n%2) 执行语句s=tob(10)后,s的值为( ) A. "1010" B. "0101" C. "1001" D. "1100" 例2 (2026金丽衢十二校联考 第10题) 定义如下递归函数: def f(n,c): if n <= c: return 1 else: return f(n//c,c)+2*c print(f(15,2)) 程序运行结束后,输出结果为( ) A. 10 B. 13 C. 12 D. 11 例3 (2025 届温州市高三二模 第 13 题节选) 竖直上抛运动,高度h=t-g,取g=10,完成函数定义。 def height(v0,t): g=10 h = ________________ return h 横线处填入表达式:________ 考向2 枚举算法框架填空(非选择题高频) 例1 (Z20 名校联盟 2024‑2025 学年高三第三次联考 第14题节选) 求解区间 [20,80] 中,能够同时被3和5整除的全部整数。 res=[] for i in range(20,________): if ________________: res.append(i) print(res) (1) 第一空: ;(2) 第二空: 例2 (2026宁波一模 第10题) a数组中有n个元素(n为偶数),现要将所有索引为奇数的元素循环右移两位,索引为偶数的元素不变,如[1,2,3,4,5,6]处理后得到[1,6,3,2,5,4]。实现该功能的Python程序段如下: n=len(a) last=a[n-1] for i in range(① ) ② a[i]=last 则划线处应填入的正确代码为( ) A. ①n-3,0,-2 ②a[i+2]=a[i] B. ①n-1,1,-2 ②a[i-2]=a[i] C. ①1,n-1,2 ②a[i+2]=a[i] D. ①0,n-2,2 ②a[i-2]=a[i] 考点三 迭代与递归算法 知识点1 迭代算法 迭代:利用循环,不断用旧变量计算出新变量,逐步逼近结果。for、while循环就是迭代。 示例:求1+2+…+n def sum_iter(n): s=0 for i in range(1,n+1): s += i return s 知识点2 递归算法 递归:函数调用自身完成计算,两个必要条件,缺一不可: 1. 基线条件(终止条件):满足条件不再调用自身,直接返回值,防止无限递归; 2. 递归调用:把原问题拆解成规模更小的子问题,调用自己求解子问题。 ①递归模板 ②示例:阶乘 n! = n!×(n1)!;基线条件:1!=1 def fact(n): if n==1: return 1 return n*fact(n-1) 递归调用栈(难点) · 每次递归调用,系统会保存当前函数局部变量,压入调用栈; · 先调用、后返回;后调用、先返回(栈:后进先出)。 · 递归深度过大会栈溢出;Python默认递归深度约1000层。 迭代用循环,不产生调用栈;递归靠函数自调用,占用栈空间。 考●向●破●译 考向1 递归调用结果手动推演(选择题必练题型) 例1 (2026杭州上城5地一模 第10题) 对于任意正整数n,调用函数cal(n)返回的结果为n的各位数之和,要实现上述功能,如下程序段中,加框处的代码不能为( ) def cal(n): if n < 10: return n return ▲ A. cal(n//10)+n%10 B. cal(n//10)+cal(n%10) C. cal(n//100)+n%10+n//10%10 D. cal(n//100)+cal(n%100) 例2 (2025嵊州一模 第10题) 定义如下函数: def f(x): if x==1 or x==2: return 1 else: return f(x-1)+f(x-2) s=0 for i in range(1,5): s+=f(i) 执行该程序段后,函数f被调用的次数是( ) A. 10 B. 9 C. 8 D. 7 例3 (Z20 名校联盟 20252026 学年高三上第二次联考 第 10 题) 有如下 Python 程序段: def f(n): if n <= 2: return n return f(n1)+2*f(n2) result = 0 for i in range(1,6): result += f(i) print(result) 执行程序后,变量 result 的值是() A.31 B.32 C.63 D.64 考向2 追踪递归调用栈,局部变量变化(难点) 例1(诸暨市 2024‑2025 学年高三 5 月适应性考试 第 11 题) def dfs(n): print(n,end="-") if n==1: return dfs(n-1) print(n,end="-") dfs(3) 程序运行后的输出是() A.3‑2‑1‑2‑3‑ B.3‑2‑1‑ C.1‑2‑3‑2‑1‑ D.3‑2‑1‑1‑2‑3‑ 考向3 递归代码填空(非选择题) 例1 (Z20 名校联盟 2024 届高三第三次联考 第 13 题节选) 猴子吃桃问题:第 7 天剩余 1 颗桃子;每一天桃子数量 =(后一天桃子数 + 1)*2。完成递归函数。 def peach(day): if day ==7: return 1 else: return ____________ print(peach(1)) 横线处填写:________ 考点四 时间复杂度的初步估算 知识点1 大O表示法 时间复杂度描述:当输入规模n变大时,程序执行时间增长趋势;忽略常数、低阶项、系数,只保留最高阶项。 复杂度阶 典型场景 O(1)常量阶 简单顺序语句,固定次数执行,与n无关 O(log₂n)对数阶 对分查找,每次问题规模折半 O(n)线性阶 单层循环,循环n次 O(n²)平方阶 双层嵌套循环 示例: 递归时间复杂度简单判断: 斐波那契递归def fib(n): return fib(n1)+fib(n2),时间复杂度O(2ⁿ),效率远低于迭代O(n)版本。 考●向●破●译 考向1 选择题判断时间复杂度 例1 (七彩阳光 2025 年高三 11 月测试 第 8 题) 下列程序段,时间复杂度为O(n)的是() A. s=0 for i in range(n): s += i B. i=n while i>0: i = i//2 C. for i in range(n): for j in range(n): print(i,j) D. print(20*100) 考向2 结合算法特征辨析复杂度阶 例1(2026 届宁波市高三二模 第 8 题) 关于算法时间复杂度,下列叙述正确的是() A.时间复杂度O()的算法一定比O(n)运行时间短 B.对分查找算法时间复杂度为O(n) C.双层for循环嵌套,一般情况下时间复杂度为O() D.大O记法中O(2n)等价于O(2) 真题溯源·考向感知 ——溯源真题逻辑,感知高考考向 1. (选考真题・2023 年浙江 6 月信息技术选考 第 10 题) 定义如下函数: def f(a,s): if a>=s: return a else: return f(a+1,s-a) 执行语句 k = f (6,21) 后,k 的值为() A.6 B.7 C.8 D.9 2.(选考真题・2025 年浙江 1 月信息技术选考 第 11 题) 对于任意非空字符串 s,甲、乙程序段输出结果相同,则乙程序段加框处的正确代码为() 甲程序段: def f(s,t): if t>=len(s)-2: return s[t] return f(s,t+2)+s[t] print(f(s0,0)) 乙程序段: r="" n=len(s) for i in range(0,n,2): ▲ print(r) A. r=s[n-i]+r B. r=r+s[n-i-1] C. r=r+s[i] D. r=s[i]+r 2 / 3 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 第03讲 函数与算法 内容导航 01 命题透视·考情前瞻 对标素养,研判高考命题趋势 02 思维建模·脉络梳理 搭建知识框架,构建系统思维 03 考点精讲·靶向突破 拆解核心考点,归纳解题范式 考点一 自定义函数与模块导入 知识解构 知识点1 自定义函数与模块导入 知识点2 参数传递(类值传递、类引用传递) 知识点 3 模块导入的多种方式 考向破译 考向1 函数调用、return、局部变量辨析 考向2 可变 / 不可变对象参数传递推演 考向3 模块导入的多种方式 考点二 解析算法与枚举算法思想 知识解构 知识点1 解析算法 知识点2 枚举算法(三要素、程序框架) 考向破译 考向1 解析算法数学公式转换为代码填空 考向2 枚举算法框架理解与代码填空 考点三 迭代与递归算法 知识解构 知识点1迭代算法 知识点2 递归算法:递归定义、基线条件、递归调用、调用栈 考向破译 考向1 递归调用结果手动推演(选择题必练) 考向2 追踪递归调用栈与多层局部变量变化 考向 3 递归算法代码填空 考点四 时间复杂度初步估算 知识解构 知识点1 大O表示法,常见复杂度阶 知识点2 简单循环、递归的时间复杂度估算 考向破译 考向1 根据代码片段判断时间复杂度   考向 2 结合算法特征辨析复杂度阶 04 真题溯源·考向感知 溯源真题逻辑,感知高考考向 命题透视·考情前瞻 ——对标素养,研判高考命题趋势 考点要求 考查形式 2026年 2025年 2024年 自定义函数、参数传递、模块导入 þ选择题 非选择题 浙江卷 1 月 T8,2 分 浙江卷 6 月 T14,填空 浙江卷 6 月 T10,2分 浙江卷 1 月 T11,2分 解析、枚举算法思想与代码实现 选择题 非选择题 浙江卷 6 月 T15,9分 浙江卷 6 月 T13,填空 浙江卷 1 月 T15,9分 迭代、递归调用结果推演、调用栈追踪 þ选择题 非选择题 浙江卷 1 月 T12,2分 浙江卷 6 月 T12,2分 浙江卷 6 月 T11,2分 时间复杂度初步估算 þ选择题 非选择题 浙江卷 6 月 T7,2分 浙江卷 1 月 T8,2分 浙江卷 6 月 T9,2分 考情分析: 1.浙江信息技术选考中,函数与算法属于核心高频模块。选择题侧重:递归调用结果判断、参数传递带来变量变化辨析、时间复杂度判断;非选择题常结合真实情境,把解析 / 枚举算法嵌入函数,考查代码填空、读懂递归执行流程。 2.从命题思路上看, (1)自定义函数重点考查实参与形参、可变对象 / 不可变对象参数传递效果(Python 无纯粹值 / 引用传递,表现出类值、类引用效果),经常结合列表、二维列表考查函数内修改是否影响外部变量。 (2)解析算法重在公式转化为代码;枚举算法重在确定枚举范围、设置判断条件,常考循环 + 分支框架。 (3)递归是难点:必须识别基线条件;读懂调用栈 “先调用后返回,后进先出”;区分递归与迭代;注意递归深度限制。 (4)时间复杂度只要求初步估算,掌握常见 O (1)、O (n)、O (log n)、O (n²),去掉常数、低阶项,只保留最高阶。 复习目标: 1. 掌握自定义函数 def 语法、return 返回值;分清形参实参,理解可变 / 不可变对象作为参数时的传递效果;掌握 import 模块多种写法。 2. 区分解析算法与枚举算法,能把数学公式转解析代码,能写出枚举算法完整框架(确定范围 + 判断条件)。 3. 理解迭代与递归;能手动追踪递归调用栈、多层递归局部变量变化,识别基线条件,区分递归终止与死递归。 4. 会简单估算循环、递归的时间复杂度大 O 阶。 思维建模·脉络梳理 ——搭建知识框架,构建系统思维 考点精讲·靶向突破 ——拆解核心考点,归纳解题范式 考点一 自定义函数与模块导入 知●识●解●构 知识点1 自定义函数的定义、调用、返回值 1. 定义语法: · 形参:定义函数括号内变量;实参:调用函数传入的实际数据。 · return作用:①结束函数运行; ②把结果返回给调用处;一条return执行后,后续代码不再运行。 · 函数内部变量是局部变量,默认不能直接在函数外部访问。 2. 示例: 知识点2 参数传递(类值传递、类引用传递) Python语言本身是对象引用传递,根据对象可变与否表现两种效果。 1. 不可变对象(int、float、字符串str、元组tuple):类值传递效果 函数内部对形参重新赋值,不会改变外部实参。 2. 可变对象(列表list、字典dict):类引用传递效果 如果修改对象内部元素,外部原始对象同步改变; ⚠注意:如果给形参整体重新赋值(如lst=[1,2]),是让形参指向新列表,不会改变外部原列表。 示例1(修改列表内部元素,外部跟着变) 示例2(形参整体赋值,不改变外部) 知识点3 模块导入 导入写法 说明 使用方式 import random 导入整个random模块 random.randint(1,10) from random import randint 只导入randint函数 直接写randint(1,10) from random import * 导入模块全部内容,不推荐 直接调用函数 选考常考:import random、import math。 考●向●破●译 考向1 函数调用、return、局部变量辨析(选择题) 例1 (2025宁波一模 第10题) 有如下Python程序段: from random import randint def fun(a,x): r=0 for i in range(len(a)): if a[i]%x != 0: a[r]=a[i] r+=1 return a[:r] a=[3,5,16,9,8,5] t=randint(3,5) a=fun(a,t) 则运行程序后,a的值不可能是( ) A. [5,16,8,5] B. [3,5,9,5] C. [3,5,16,9] D. [3,16,9,8] 答案:C 解析:本题考查自定义函数的调用、return返回值与随机数。函数fun的功能是从前往后遍历列表a,若当前元素不能被x整除,就把它依次从索引0开始顺序写回,最后返回a[:r],返回的是列表的一个切片(新列表),不影响外部原列表的长度。t=randint(3,5)可能取3、4、5:t=3时不能被3整除的数为5,16,8,5,选项A有可能;t=4时不能被4整除的数有3,5,9,5,选项B有可能;t=5时不能被5整除的数有3,16,9,8,选项D有可能。故a的值不可能是选项C。 例2(Z20 名校联盟 20252026 学年高三上第二次联考 第 9 题) 关于 Python 函数,下列说法正确的是() A. 没有return语句的函数调用后会报错 B. return返回多个值时必须使用列表进行包裹 C. 函数内部定义的局部变量,不能在函数外部直接使用 D. 调用函数时实参只能使用变量,不能使用表达式 答案:C 【解析】 A:函数无 return,默认返回 None,不会报错。 B:return 可直接用逗号返回多个值,不需要列表包裹。 C:局部变量作用域仅限于函数内部,外部无法直接访问,正确。 D:实参可以是常量、变量、表达式。 考向2 可变对象参数传递推演(选择题) 例1(2026 届宁波市高三二模 第 10 题) 有如下 Python 程序段: def func(x, arr): x = x * 2 arr[1] += x num = 6 ls = [2, 5, 7] func(num, ls) print(num, ls[1]) 执行该程序段后,输出的结果是() A.6 17  B.12 17 C.6 11 D.12 11 答案:A 【解析】 num为int不可变对象,函数内对形参 x 赋值,不改变外部 num 的值,num=6; ls 是列表可变对象,修改列表元素 arr [1] 会同步影响原列表,ls [1]=5+12=17。输出6 17。 考向3 函数相关代码填空(非选择题) 例1【七彩阳光 20252026 学年高三返校联考 第 13 题节选】 编写函数 calc_sum,计算 [a,b] 闭区间所有整数的和。 def calc_sum(a,b): s=0 for i in range(a,b+1): s += i ____________ res=calc_sum(2,10) print(res) 划线处应填入的语句为________。 答案:return s 【解析】函数计算得到 s,需要通过 return 将计算结果返回给调用处;若无 return,则 res 接收值为 None。 考点二 解析算法与枚举算法思想 知识点1 解析算法 解析算法:直接使用数学公式、关系式,把已知量代入公式直接求解,不需要遍历全部可能。 · 核心:找到问题数学表达式,翻译为Python代码。 示例:已知三边a,b,c求三角形面积(海伦公式) 知识点2 枚举算法 枚举算法:把问题所有可能的解,不重不漏全部列举出来,用条件判断筛选符合条件的正确解。 1.枚举三要素: (1)枚举对象:要尝试的变量; (2)枚举范围:变量取值区间,用for/while循环实现; (3)判断条件:if判断,筛选真正满足题意的解。 2.基础框架模板: 3.示例:百钱买百鸡,公鸡5元,母鸡3元,小鸡1元3只,100元买100只鸡。 辨析:解析靠公式直接算;枚举靠循环逐个试候选解。 考●向●破●译 考向1 解析算法公式转代码(填空) 例1 (2024宁波一模 第10题) 定义如下函数: def tob(n): if n==0: return "" else: return tob(n//2)+str(1-n%2) 执行语句s=tob(10)后,s的值为( ) A. "1010" B. "0101" C. "1001" D. "1100" 答案:B 解析:本题考查把数学关系式直接翻译为程序代码的解析思想。函数用n//2把问题规模逐层缩小,用1-n%2直接算出该位应取的字符,是「按公式直接计算」而不是遍历枚举。执行过程:tob(10)→tob(5)+"1"→tob(2)+"0"→tob(1)+"1"→tob(0)+"0",tob(0)返回空串,逐层回代得"0101"。故选B。 例2 (2026金丽衢十二校联考 第10题) 定义如下递归函数: def f(n,c): if n <= c: return 1 else: return f(n//c,c)+2*c print(f(15,2)) 程序运行结束后,输出结果为( ) A. 10 B. 13 C. 12 D. 11 答案:B 解析:本题考查解析算法中公式的直接代入与求值。f(15,2):15>2,返回f(7,2)+4;f(7,2):7>2,返回f(3,2)+4;f(3,2):3>2,返回f(1,2)+4;f(1,2):1≤2,返回1。逐层回代:f(3,2)=1+4=5,f(7,2)=5+4=9,f(15,2)=9+4=13。故选B。 例3 (2025 届温州市高三二模 第 13 题节选) 竖直上抛运动,高度h=t-g,取g=10,完成函数定义。 def height(v0,t): g=10 h = ________________ return h 横线处填入表达式:________ 答案:v0*t-0.5*g*t**2 【解析】将物理公式直接翻译为 Python 表达式;乘法运算符不能省略,平方使用**。 考向2 枚举算法框架填空(非选择题高频) 例1 (Z20 名校联盟 2024‑2025 学年高三第三次联考 第14题节选) 求解区间 [20,80] 中,能够同时被3和5整除的全部整数。 res=[] for i in range(20,________): if ________________: res.append(i) print(res) (1) 第一空: ;(2) 第二空: 答案:(1)81;(2)i%3==0 and i%5==0 【解析】range左闭右开,要包含80,终止参数写81;同时被3、5整除,两个取模条件用逻辑and连接。 例2 (2026宁波一模 第10题) a数组中有n个元素(n为偶数),现要将所有索引为奇数的元素循环右移两位,索引为偶数的元素不变,如[1,2,3,4,5,6]处理后得到[1,6,3,2,5,4]。实现该功能的Python程序段如下: n=len(a) last=a[n-1] for i in range(① ) ② a[i]=last 则划线处应填入的正确代码为( ) A. ①n-3,0,-2 ②a[i+2]=a[i] B. ①n-1,1,-2 ②a[i-2]=a[i] C. ①1,n-1,2 ②a[i+2]=a[i] D. ①0,n-2,2 ②a[i-2]=a[i] 答案:A 解析:本题考查枚举范围(range的起点、终点、步长)的确定与循环体内索引的递推。要把所有奇数索引元素循环右移两位,必须从后往前处理才不会覆盖尚未移动的数据:last先保存a[n-1](最后一个奇数索引元素),循环变量i从n-3开始、到0结束、步长-2,每次令a[i+2]=a[i],把奇数位元素整体后移两位;循环结束后再把last写入a[0]。故①填n-3,0,-2,②填a[i+2]=a[i],选A。 考点三 迭代与递归算法 知识点1 迭代算法 迭代:利用循环,不断用旧变量计算出新变量,逐步逼近结果。for、while循环就是迭代。 示例:求1+2+…+n def sum_iter(n): s=0 for i in range(1,n+1): s += i return s 知识点2 递归算法 递归:函数调用自身完成计算,两个必要条件,缺一不可: 1. 基线条件(终止条件):满足条件不再调用自身,直接返回值,防止无限递归; 2. 递归调用:把原问题拆解成规模更小的子问题,调用自己求解子问题。 ①递归模板 ②示例:阶乘 n! = n!×(n1)!;基线条件:1!=1 def fact(n): if n==1: return 1 return n*fact(n-1) 递归调用栈(难点) · 每次递归调用,系统会保存当前函数局部变量,压入调用栈; · 先调用、后返回;后调用、先返回(栈:后进先出)。 · 递归深度过大会栈溢出;Python默认递归深度约1000层。 迭代用循环,不产生调用栈;递归靠函数自调用,占用栈空间。 考●向●破●译 考向1 递归调用结果手动推演(选择题必练题型) 例1 (2026杭州上城5地一模 第10题) 对于任意正整数n,调用函数cal(n)返回的结果为n的各位数之和,要实现上述功能,如下程序段中,加框处的代码不能为( ) def cal(n): if n < 10: return n return ▲ A. cal(n//10)+n%10 B. cal(n//10)+cal(n%10) C. cal(n//100)+n%10+n//10%10 D. cal(n//100)+cal(n%100) 答案:D 解析:本题考查递归调用结果的手工推演与return返回值的含义。选项A用cal(n//10)求去掉个位后的各位数之和,再加上个位数n%10,正确;选项B中cal(n%10)即个位数本身,等价于A,正确;选项C把n拆成n//100、十位、个位三部分分别相加,正确;选项D中当n为两位数(如n=50)时n//100=0,cal(0)返回0,而cal(n%100)又以同样的方式继续拆分,递归无法收敛,形成死循环,故不能实现功能。答案为D。 例2 (2025嵊州一模 第10题) 定义如下函数: def f(x): if x==1 or x==2: return 1 else: return f(x-1)+f(x-2) s=0 for i in range(1,5): s+=f(i) 执行该程序段后,函数f被调用的次数是( ) A. 10 B. 9 C. 8 D. 7 答案:A 解析:本题考查递归调用过程的手工推演与调用次数统计。f(1)直接返回,调用1次;f(2)直接返回,调用1次;f(3)=f(2)+f(1),共调用1+1+1=3次;f(4)=f(3)+f(2),共调用3+1+1=5次。循环i取1、2、3、4,合计1+1+3+5=10次。故选A。 例3 (Z20 名校联盟 20252026 学年高三上第二次联考 第 10 题) 有如下 Python 程序段: def f(n): if n <= 2: return n return f(n1)+2*f(n2) result = 0 for i in range(1,6): result += f(i) print(result) 执行程序后,变量 result 的值是() A.31 B.32 C.63 D.64 答案:A 解析:f(1)=1,f(2)=2 f(3)=f(2)+2*f(1)=2+2*1=4 f(4)=f(3)+2*f(2)=4+2*2=8 f(5)=f(4)+2*f(3)=8+2*4=16 result=1+2+4+8+16=31。 考向2 追踪递归调用栈,局部变量变化(难点) 例1(诸暨市 2024‑2025 学年高三 5 月适应性考试 第 11 题) def dfs(n): print(n,end="-") if n==1: return dfs(n-1) print(n,end="-") dfs(3) 程序运行后的输出是() A.3‑2‑1‑2‑3‑ B.3‑2‑1‑ C.1‑2‑3‑2‑1‑ D.3‑2‑1‑1‑2‑3‑ 答案:A 【解析】 调用顺序:dfs(3)打印3- →dfs(2)打印2‑→dfs(1)打印1‑,触发 return; 回代:回到 dfs (2) 打印2‑;回到 dfs (3) 打印3‑。 完整输出:3‑2‑1‑2‑3‑。 考向3 递归代码填空(非选择题) 例1 (Z20 名校联盟 2024 届高三第三次联考 第 13 题节选) 猴子吃桃问题:第 7 天剩余 1 颗桃子;每一天桃子数量 =(后一天桃子数 + 1)*2。完成递归函数。 def peach(day): if day ==7: return 1 else: return ____________ print(peach(1)) 横线处填写:________ 答案:(peach(day+1)+1)*2 【解析】递归向 day 增大方向推进;基线条件day=7返回1,根据递推公式书写返回表达式。 考点四 时间复杂度的初步估算 知识点1 大O表示法 时间复杂度描述:当输入规模n变大时,程序执行时间增长趋势;忽略常数、低阶项、系数,只保留最高阶项。 复杂度阶 典型场景 O(1)常量阶 简单顺序语句,固定次数执行,与n无关 O(log₂n)对数阶 对分查找,每次问题规模折半 O(n)线性阶 单层循环,循环n次 O(n²)平方阶 双层嵌套循环 示例: 递归时间复杂度简单判断: 斐波那契递归def fib(n): return fib(n1)+fib(n2),时间复杂度O(2ⁿ),效率远低于迭代O(n)版本。 考●向●破●译 考向1 选择题判断时间复杂度 例1 (七彩阳光 2025 年高三 11 月测试 第 8 题) 下列程序段,时间复杂度为O(n)的是() A. s=0 for i in range(n): s += i B. i=n while i>0: i = i//2 C. for i in range(n): for j in range(n): print(i,j) D. print(20*100) 答案:B 【解析】 A 单层循环,O(n); B 循环变量 i 每次折半,O(n)正确; C 双层嵌套循环,O(); D 语句执行次数固定,O(1)。 考向2 结合算法特征辨析复杂度阶 例1(2026 届宁波市高三二模 第 8 题) 关于算法时间复杂度,下列叙述正确的是() A.时间复杂度O()的算法一定比O(n)运行时间短 B.对分查找算法时间复杂度为O(n) C.双层for循环嵌套,一般情况下时间复杂度为O() D.大O记法中O(2n)等价于O(2) 答案:C 【解析】 A:n 足够大时,O()耗时远大于O(n); B:对分查找时间复杂度O(n); C:双层嵌套循环一般为O(),正确; D:大O忽略常数系数,O(2n)等价O(n)。 真题溯源·考向感知 ——溯源真题逻辑,感知高考考向 1. (选考真题・2023 年浙江 6 月信息技术选考 第 10 题) 定义如下函数: def f(a,s): if a>=s: return a else: return f(a+1,s-a) 执行语句 k = f (6,21) 后,k 的值为() A.6 B.7 C.8 D.9 【参考答案与解析】 答案:C 解析: 本题考查递归算法及自定义函数知识。观察自定义函数 f (a,s) 可知:当参数 a≥s 时(即递归 结束条件),返回值 a;否则递归调用 f (a+1,s-a)。 模拟计算: f (6,21),a=6<21 →调用 f (7,15) f (7,15),a=7<15 →调用 f (8,8) f (8,8),满足 a>=s,返回 8。故 k=8。 2.(选考真题・2025 年浙江 1 月信息技术选考 第 11 题) 对于任意非空字符串 s,甲、乙程序段输出结果相同,则乙程序段加框处的正确代码为() 甲程序段: def f(s,t): if t>=len(s)-2: return s[t] return f(s,t+2)+s[t] print(f(s0,0)) 乙程序段: r="" n=len(s) for i in range(0,n,2): ▲ print(r) A. r=s[n-i]+r B. r=r+s[n-i-1] C. r=r+s[i] D. r=s[i]+r 【参考答案与解析】 答案:D 解析: 递归函数 f (s,t),t 从 0 开始,每次 + 2,返回f(s,t+2)+s[t],是先递归后面字符,再拼接当前s [t]。 例如 s0="abcde",递归执行顺序:先处理 t=2,再 t=0;输出:"eca"。 循环 i 取 0,2,4,执r=s[i]+r,实现从后往前拼接隔位字符,和递归输出结果一致。 2 / 3 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

第03讲 函数与算法 (复习讲义)(浙江专用)2027年高考信息技术一轮复习讲练测
1
第03讲 函数与算法 (复习讲义)(浙江专用)2027年高考信息技术一轮复习讲练测
2
第03讲 函数与算法 (复习讲义)(浙江专用)2027年高考信息技术一轮复习讲练测
3
所属专辑
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。