第13课 递推与模拟——一步一步往下推课后练习--小学信息科技Python程序设计

资源下载
  1. 二一教育资源

第13课 递推与模拟——一步一步往下推课后练习--小学信息科技Python程序设计

资源简介

/ 让教学更有效 精品试卷 | 信息
第13课 课后练习
(答案版 · 教师用)
班级:____________ 姓名:____________ 得分:__________
一、填空(每空 3 分,共 24 分)
1.递推的三要素是:______________、递推公式、______________。
2.斐波那契数列 1, 1, 2, 3, 5, 8, …,它的递推公式是 f(n) = ______________ + ______________。
3.猴子吃桃问题中,如果第 k + 1 天早上有 y 个桃子,那么第 k 天早上有 ______ 个桃子。
4.倒着循环时,range 的第三个参数应写成 ______。
5.猴子吃桃到第 10 天早上剩 1 个,第 9 天早上应有 ______ 个。
二、判断对错(每题 3 分,共 12 分)
1.递推必须从第一项开始算,不能倒着推。(  )
2.a, b = b, a + b 这一行会先把右边的 a + b 算出来,再同时赋值。(  )
3.爬楼梯问题的走法数量,本质上就是斐波那契数列。(  )
4.用递推求斐波那契第 35 项,比用递归快得多。(  )
三、手算模拟题(16 分)
第 1 题 用两个变量法求斐波那契第 6 项,请填表。
i 挪之前的 a 挪之前的 b 本项的值
初始 1 1 —
3
4
5
6
第 6 项的值是 ______。
第 2 题 猴子吃桃:请从第 10 天倒推到第 5 天,填表。
天 当天早上个数 计算过程
第 10 天 1 已知
第 9 天
第 8 天
第 7 天
第 6 天
第 5 天
四、★ 补全代码(每空 5 分,共 20 分)
第 1 题 用递推求第 n 项斐波那契数。
n = int(input())
if n <= 2:
print(1)
else:/n a, b = 1, 1
for i in range(3, n + 1):
a, b = b, ①________________
print(b)
第 2 题 用列表递推求斐波那契。
f = [0] * (n + 1)
f[1] = 1
f[2] = 1
for i in range(3, n + 1):
f[i] = f[i - 1] + ②________________
print(③____________)
第 3 题 猴子吃桃。
peach = 1
for day in range(9, ④______, -1):
peach = (peach + 1) * 2
print(peach)
① ______ ② ______ ③ ______ ④ ______
五、★★ 提高题(每题 10 分,共 30 分)
第 1 题 递推与递归对比
同一道「求第 n 项斐波那契数」,请分别用递归和递推写出程序,把 n 设为 30 各跑一次,感受速度差异,并说明递推为什么更快。
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
结 论:____________________________________________________________
______________________________________________________________
______________________________________________________________
第 2 题 爬楼梯(一题多解)
有一段 n 级台阶,每次可以走 1 级或 2 级。① 请手算 n = 1、2、3、4 时的走法数量,填入下表;② 观察规律,写出 n = 5、6 时的走法数量;③ 用递推编程验证你的答案。
n 1 2 3 4 5 6
走法数
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
第 3 题 读程序写结果
x = 3
for i in range(4):
x = x * 2 - 1
print(x, end=" ")
print()
print("最终:", x)
输出结果:____________________________________
最终 x = ______。
六、★★★ 挑战题(每题 12 分,共 24 分)
第 1 题 猴子吃桃完整版
完成猴子吃桃问题,并要求:① 输出每一天早上的桃子个数;② 找出在哪一天桃子第一次少于 100 个。
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
自测:第 10 天 1 个,第 9 天 4 个,第 1 天共 1534 个。
第 2 题 数列求和(递推思想)
已知数列:1, 3, 6, 10, 15, 21, …(每一项是前面所有项之和再加 1,等价于 f(n) = f(n-1) + n)。
请用递推求出这个数列的前 20 项,并输出前 20 项之和。
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
教师评语:
__________________________________________________________________
__________________________________________________________________
第 13 课 参考答案(教师用)
与《教师参考答案》册同源,全部数值均已实际运行核验
一、填空
1.初始值、循环推进 2.f(n - 1)、f(n - 2) 3.(y + 1) * 2
4.-1 5.4
二、判断对错
1.×(当顺着推困难、倒着推容易时,完全可以倒推) 2.√ 3.√ 4.√
三、手算模拟题
第 1 题:
i 挪之前的 a 挪之前的 b 本项的值
初始 1 1 —
3 1 1 2
4 1 2 3
5 2 3 5
6 3 5 8
第 6 项的值是 8。
第 2 题:
天 当天早上个数 计算过程
第 10 天 1 已知
第 9 天 4 (1 + 1) × 2 = 4
第 8 天 10 (4 + 1) × 2 = 10
第 7 天 22 (10 + 1) × 2 = 22
第 6 天 46 (22 + 1) × 2 = 46
第 5 天 94 (46 + 1) × 2 = 94
四、★ 补全代码
① a + b ② f[i - 2] ③ f[n] ④ 0
五、★★ 提高题
第 1 题:递推版见本课示例 1;递归版见第 10 课示例 2。n = 30 时,递推几乎瞬间完成,递归要等好几秒。递推更快是因为每一项只算一次,而递归会重复计算大量相同的项。
第 2 题:
n 1 2 3 4 5 6
走法数 1 2 3 5 8 13
规律:从 n = 3 起,走法数 = 前两项之和,正是斐波那契数列(后移一位)。
n = int(input("楼梯级数:"))
if n <= 2:
print(n)
else:
a, b = 1, 2
for i in range(3, n + 1):
a, b = b, a + b
print(b)
第 3 题:输出 5 9 17 33(每行一个数连着空格),最终 x = 33。
六、★★★ 挑战题
第 1 题:
peach = 1
days = [0] * 11
days[10] = 1
for day in range(9, 0, -1):
peach = (peach + 1) * 2
days[day] = peach
for d in range(1, 11):
print(f"第 {d} 天早上:{days[d]} 个")
# 第一次少于 100 个
for d in range(1, 11):
if days[d] < 100:
print(f"第 {d} 天桃子第一次少于 100 个")
break
自测:第 10 天 1 个,第 9 天 4 个,第 1 天 1534 个。第 5 天早上 94 个,是第一次少于 100 个。
第 2 题:
f = [0] * 21
f[1] = 1
for i in range(2, 21):
f[i] = f[i - 1] + i
for i in range(1, 21):
print(f[i], end=" ")
print()
print("前 20 项之和:", sum(f[1:21]))
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)/ 让教学更有效 精品试卷 | 信息
第13课 课后练习
(学生用)
班级:____________ 姓名:____________ 得分:__________
一、填空(每空 3 分,共 24 分)
1.递推的三要素是:______________、递推公式、______________。
2.斐波那契数列 1, 1, 2, 3, 5, 8, …,它的递推公式是 f(n) = ______________ + ______________。
3.猴子吃桃问题中,如果第 k + 1 天早上有 y 个桃子,那么第 k 天早上有 ______ 个桃子。
4.倒着循环时,range 的第三个参数应写成 ______。
5.猴子吃桃到第 10 天早上剩 1 个,第 9 天早上应有 ______ 个。
二、判断对错(每题 3 分,共 12 分)
1.递推必须从第一项开始算,不能倒着推。(  )
2.a, b = b, a + b 这一行会先把右边的 a + b 算出来,再同时赋值。(  )
3.爬楼梯问题的走法数量,本质上就是斐波那契数列。(  )
4.用递推求斐波那契第 35 项,比用递归快得多。(  )
三、手算模拟题(16 分)
第 1 题 用两个变量法求斐波那契第 6 项,请填表。
i 挪之前的 a 挪之前的 b 本项的值
初始 1 1 —
3
4
5
6
第 6 项的值是 ______。
第 2 题 猴子吃桃:请从第 10 天倒推到第 5 天,填表。
天 当天早上个数 计算过程
第 10 天 1 已知
第 9 天
第 8 天
第 7 天
第 6 天
第 5 天
四、★ 补全代码(每空 5 分,共 20 分)
第 1 题 用递推求第 n 项斐波那契数。
n = int(input())
if n <= 2:
print(1)
else:/n a, b = 1, 1
for i in range(3, n + 1):
a, b = b, ①________________
print(b)
第 2 题 用列表递推求斐波那契。
f = [0] * (n + 1)
f[1] = 1
f[2] = 1
for i in range(3, n + 1):
f[i] = f[i - 1] + ②________________
print(③____________)
第 3 题 猴子吃桃。
peach = 1
for day in range(9, ④______, -1):
peach = (peach + 1) * 2
print(peach)
① ______ ② ______ ③ ______ ④ ______
五、★★ 提高题(每题 10 分,共 30 分)
第 1 题 递推与递归对比
同一道「求第 n 项斐波那契数」,请分别用递归和递推写出程序,把 n 设为 30 各跑一次,感受速度差异,并说明递推为什么更快。
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
结 论:____________________________________________________________
______________________________________________________________
______________________________________________________________
第 2 题 爬楼梯(一题多解)
有一段 n 级台阶,每次可以走 1 级或 2 级。① 请手算 n = 1、2、3、4 时的走法数量,填入下表;② 观察规律,写出 n = 5、6 时的走法数量;③ 用递推编程验证你的答案。
n 1 2 3 4 5 6
走法数
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
第 3 题 读程序写结果
x = 3
for i in range(4):
x = x * 2 - 1
print(x, end=" ")
print()
print("最终:", x)
输出结果:____________________________________
最终 x = ______。
六、★★★ 挑战题(每题 12 分,共 24 分)
第 1 题 猴子吃桃完整版
完成猴子吃桃问题,并要求:① 输出每一天早上的桃子个数;② 找出在哪一天桃子第一次少于 100 个。
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
自测:第 10 天 1 个,第 9 天 4 个,第 1 天共 1534 个。
第 2 题 数列求和(递推思想)
已知数列:1, 3, 6, 10, 15, 21, …(每一项是前面所有项之和再加 1,等价于 f(n) = f(n-1) + n)。
请用递推求出这个数列的前 20 项,并输出前 20 项之和。
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
教师评语:
__________________________________________________________________
__________________________________________________________________
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)

展开更多......

收起↑

资源列表