🎬 课前导入动画 — 兔子繁殖的秘密
小航养了一对小兔子,看看兔子怎么越生越多
点击开始演示 ▶

第X课 斐波那契的兔子农场 — 小航养兔记

教师备课端 | 4C1E教学设计 | 知识点体系 | 小学四年级趣味C++ | 课程时长 120分钟

课程概览
教学流程
知识点体系
代码与拓展
反思与评价

📋课程基本信息

项目内容
课程名称第X课 斐波那契的兔子农场——小航养兔记
授课对象小学四年级学生(C++入门阶段,有变量、if/else、for循环基础)
课程时长120分钟(2课时)
教学方法故事驱动(小航养兔)+ 可视化演示(兔子数量增长)+ 代码填空(递推程序)
核心知识变量与赋值、for循环、变量更新递推(c=a+b; a=b; b=c)、整数运算、if边界判断
GESP级别一级~二级(不使用数组、不使用自定义函数)

🎯教学目标

知识与技能

  • 理解斐波那契数列的来源:兔子繁殖问题
  • 掌握递推思想:当前月 = 前一个月 + 前两个月
  • 理解变量更新顺序:c=a+b; a=b; b=c 的含义和顺序重要性
  • 能完成代码填空,用for循环模拟N个月后兔子总数
  • 掌握if边界判断:第1、2个月的特殊处理

过程与方法

  • 通过兔子繁殖故事,亲身体验递推数列的生成过程
  • 通过变量更新可视化,理解"滑动窗口"式递推
  • 通过代码填空,建立递推公式与代码实现的对应关系

情感态度与价值观

  • 感受数学之美——斐波那契数列与黄金比例、自然界的联系
  • 培养递推思维——从已知推未知,从过去推未来
  • 在故事和互动中激发对算法和数学的兴趣

📊4C1E 整体设计

C1联系
25分钟
C2建构
45分钟
C3反思
20分钟
C4延续
15分钟
E评价
15分钟
环节核心活动学生任务
联系兔子农场故事引入 → 兔子繁殖规律讨论 → 递推概念 → 生活中的递推(细胞分裂、浮萍生长)参与讨论,发现繁殖规律
建构变量设计(a/b/c) → 递推公式c=a+b → 变量更新a=b;b=c → for循环实现 → 代码填空理解递推,完成代码填空
反思斐波那契数列规律讨论 → 黄金比例0.618 → 自然界中的斐波那契(向日葵、鹦鹉螺)→ 常见错误深度思考,理解递推本质
延续分层作业(基础/提高/挑战)→ 拓展任务(密码保护答案)→ 下节课预告课后巩固,拓展提升
评价课堂小测(5选择+3判断)→ 学习反馈 → 知识点回顾检测学习效果

🔗C1 联系 Connection(25分钟)

1. 故事引入:小航养兔子(8分钟)

小航从宠物市场买了一对小兔子(一公一母),带回家养在农场里。兔子很可爱,小航每天都去看它们。

老师提问引导:小兔子刚买回来的时候还不能生宝宝,要长大才行。大家猜一猜,兔子多久能长大?多久能生宝宝?

故事设定:
① 第1个月:小兔子刚出生,还没长大(幼兔)
② 第2个月:兔子长大了,可以繁殖了(成年兔)
③ 第3个月:成年兔开始生宝宝,每月生一对小兔子
④ 新生的小兔子也要经过"第1月幼兔→第2月成年→第3月开始繁殖"的过程

2. 兔子繁殖规律讨论(10分钟)

和学生一起逐月推演:

月份成年兔对数新生兔对数总对数说明
第1月011买了一对小兔子
第2月101兔子长大了
第3月112成年兔生了一对宝宝
第4月213原来的成年兔又生一对,上月宝宝长大
第5月3252对成年兔各生一对
第6月5383对成年兔各生一对
引导学生发现规律:每个月的兔子总数 = 上个月的总数 + 上上个月的总数。为什么?因为上个月的所有兔子都还在,加上上上个月的成年兔都能生一对宝宝

3. 递推概念与生活实例(7分钟)

递推思想:知道前两个状态,就能推出下一个状态。就像爬楼梯——站在第1级和第2级,就能走到第3级;站在第2级和第3级,就能走到第4级……一步一步推下去。
  • 细胞分裂:1个细胞分裂成2个,2个变4个,4个变8个……
  • 浮萍生长:池塘里的浮萍每天面积翻倍,几天后覆盖整个池塘?
  • 爬楼梯:每次上1级或2级,上到第10级有多少种走法?
  • 存款利息:本金加上利息,下个月的本金 = 上个月本金 + 利息

🏗️C2 建构 Construction(45分钟)

1. 变量设计(8分钟)

根据递推公式 f(n) = f(n-1) + f(n-2),我们需要记录三个值:

变量说明:
a:上上个月的兔子对数(初始=1,第1个月)
b:上个月的兔子对数(初始=1,第2个月)
c:当月的兔子对数(临时变量,每次计算用)
n:用户输入的月份数

为什么需要三个变量?因为递推需要知道前两个月的值。计算完当月后,要把a和b"往后挪"一个月,才能继续算下个月。

2. 递推公式与变量更新(12分钟)

核心公式:

c = a + b; // 当月 = 上上个月 + 上个月 a = b; // 更新:上个月 → 变成"上上个月" b = c; // 更新:当月 → 变成"上个月"
变量更新顺序为什么重要?
必须先算c=a+b,再a=b,再b=c!
如果先a=b,那a原来的值就丢了!c=a+b就变成了c=b+b,结果错误。
就像排队换人:先用旧的a和b算出新c,然后a退休由b接替,b退休由c接替。顺序不能乱!

用具体例子演示(第3个月):

  • 初始:a=1(第1月),b=1(第2月)
  • c = a + b = 1 + 1 = 2(第3月有2对)
  • a = b = 1(现在a代表第2月)
  • b = c = 2(现在b代表第3月)
  • 下一轮:c = 1 + 2 = 3(第4月有3对)✓

3. for循环与边界判断(10分钟)

什么时候开始循环?第1个月和第2个月都是1对,不需要计算。从第3个月开始才需要递推。

if(n == 1 || n == 2) { cout << "第" << n << "个月有1对兔子" << endl; } else { for(int i = 3; i <= n; i++) { c = a + b; a = b; b = c; } cout << "第" << n << "个月有" << b << "对兔子" << endl; }
为什么输出b而不是c?循环结束后,b已经被更新为最后一个月(第n月)的值。c只是临时变量,最后一次循环后c=b,但如果n=3只循环一次,c就是答案。统一输出b是因为每次循环结束后b就是当月值。

4. 代码填空:兔子农场模拟器(15分钟)

场景:小航写了一个程序,输入月份数n,程序自动算出n个月后有多少对兔子。

#include <iostream> using namespace std; int main() { int n; cout << "请输入月份数:"; cin >> n; int a = ___; // ①第1个月兔子对数 int b = ___; // ②第2个月兔子对数 int c; // 临时变量 if(n ___ 1 || n == 2) { // ③边界判断条件 cout << "第" << n << "个月有1对兔子" << endl; } else { for(int i = ___; i <= n; i++) { // ④从第几个月开始循环 c = ___; // ⑤当月 = 前两个月之和 a = ___; // ⑥更新:上个月→上上个月 b = ___; // ⑦更新:当月→上个月 } cout << "第" << n << "个月有" << b << "对兔子" << endl; } return 0; }

填空答案:①1 ②1 ③== ④3 ⑤a+b ⑥b ⑦c

教学提示:给学生12-15分钟完成填空并运行验证。重点关注:①a和b初始值都是1 ②if条件n==1||n==2 ③for从i=3开始 ④c=a+b是递推核心 ⑤a=b;b=c的顺序不能反。完成后请2-3名学生上台演示运行。

🤔C3 反思 Contemplation(20分钟)

1. 斐波那契数列规律讨论(7分钟)

把每个月的兔子数列出来:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144...

  • 这就是著名的斐波那契数列
  • 规律:从第3项开始,每一项 = 前两项之和
  • 增长速度:越来越快!12个月后有144对,20个月后有6765对,30个月后有832040对!
  • 这种增长叫"指数增长"——一开始慢,后来越来越快
震撼对比:1对兔子,30个月后变成83万对!如果不控制繁殖,兔子能占领整个地球!这就是递推和指数增长的威力。

2. 黄金比例0.618(7分钟)

让学生算一算相邻两项的比值:

前项/后项比值
1/11.000
1/20.500
2/30.667
3/50.600
5/80.625
8/130.615
13/210.619
21/340.618
34/550.618
比值越来越接近0.618!这就是神奇的黄金比例。被认为是最美的比例,建筑师、画家、设计师都喜欢用它。

3. 自然界中的斐波那契(3分钟)

  • 向日葵种子:顺时针和逆时针的螺旋线数量,往往是相邻的斐波那契数(如34和55)
  • 鹦鹉螺壳:生长曲线接近黄金螺旋
  • 花瓣数量:百合3瓣、毛茛5瓣、翠雀8瓣、万寿菊13瓣——都是斐波那契数
  • 树枝分叉:树枝的生长方式也符合斐波那契规律

4. 常见错误总结(3分钟)

常见错误:
变量更新顺序错误:先a=b再c=a+b,导致a原值丢失,结果错误
for循环起始值错误:从i=1开始循环,导致前两个月被重复计算
忘记if边界判断:n=1或n=2时直接进入循环,结果不对
if条件写错:n==1||n==2写成n=1(赋值号=而非等号==)
输出错误变量:循环结束后输出c而不是b(最后一轮c=b,但中间过程要注意)

🚀C4 延续 Continuance(15分钟)

1. 分层课后任务

层次任务内容目标
基础题①完成课堂代码填空,运行截图提交;②测试n=10时输出55,验证正确性巩固核心递推代码
提高题修改程序,输出前N个月每个月的兔子数(用循环逐月输出)理解递推过程
挑战题在输出兔子数后,额外输出相邻两项的比值(b/c),观察它如何趋近0.618探索黄金比例

2. 拓展任务(密码保护答案)

拓展任务:在原程序基础上,①输出前N个月所有月份的兔子数;②计算相邻两项比值并观察趋近黄金比例。答案解析通过密码访问(密码课后发给家长)。

3. 下节课预告

下节课我们将学习while循环和break语句,制作一个"猜数字游戏"——用电脑猜你心里想的数字!斐波那契数列中学习的递推思维,将帮助你理解更复杂的算法。

📝E 评价 Evaluation(15分钟)

1. 课堂小测(10分钟)

5道难度递增的选择题 + 3道判断题,限时完成。覆盖:斐波那契数列概念、递推公式、变量更新顺序、for循环边界、if条件判断。

2. 学习反馈(3分钟)

请学生用一句话总结"兔子数量为什么越来越多",或提出一个还没弄懂的问题。

3. 知识点回顾(2分钟)

本课主线:兔子农场故事→繁殖规律→递推公式f(n)=f(n-1)+f(n-2)→变量a/b/c更新→for循环实现。一句话总结:"每个月的兔子数 = 上个月的 + 上上个月的,三个变量轮流坐庄,循环递推就能算出任何月份!"

🧠本节课知识点体系总览

本节课共涵盖 3大模块、12个核心知识点,其中 重点 标注的为必须掌握的核心内容。

🐰 模块一:斐波那契与递推思维

1. 兔子繁殖规则 重点

兔子出生后第2个月成年,第3个月开始每月生一对小兔子。每对新生兔子也按同样规律繁殖。

第1月幼兔→第2月成年→第3月开始繁殖

2. 斐波那契数列 重点

1,1,2,3,5,8,13,21,34,55,89,144...从第3项起,每一项等于前两项之和。

f(n) = f(n-1) + f(n-2)

3. 递推思想

知道前两个状态,就能推出下一个状态。像爬楼梯一样,一步一步推下去,不需要记住所有历史。

已知f(1),f(2) → 推f(3) → 推f(4) → ...

4. 生活中的递推

细胞分裂、浮萍生长、爬楼梯走法、银行利息等,都是递推思想的实际应用。

本月 = 上月 + 增量
🔄 模块二:变量与循环

5. 三个变量a/b/c 重点

a存上上个月值,b存上个月值,c是临时变量存当月值。三个变量像"滑动窗口"一样往后移。

a=上上个月, b=上个月, c=当月

6. 递推公式c=a+b 重点

当月兔子数 = 上上个月 + 上个月。因为上个月的兔子都在,上上个月的成年兔都能生宝宝。

c = a + b

7. 变量更新顺序 重点

必须先算c=a+b,再a=b,再b=c。顺序不能乱!否则a原来的值会丢失。

c=a+b → a=b → b=c

8. for循环实现

从第3个月开始循环,每次算一个月。循环变量i从3到n,每次i++。

for(i=3; i<=n; i++)
💻 模块三:边界与代码实现

9. if边界判断 重点

n=1或n=2时直接输出1对,不需要进入循环。因为前两个月都是1,没有递推关系。

if(n==1||n==2) 输出1

10. 初始值设置

a=1(第1个月),b=1(第2个月)。前两个月都是1对兔子。

int a=1, b=1;

11. 输出结果

循环结束后输出b,因为b已经被更新为第n个月的兔子数。

cout << b << "对兔子";

12. 黄金比例

相邻两项的比值(前项/后项)越来越接近0.618,即黄金比例。自然界中广泛存在。

f(n-1)/f(n) → 0.618

🎯 本节课5大重点知识

斐波那契数列(1,1,2,3,5,8...每项=前两项之和)
递推公式(c=a+b,当月=前两个月之和)
变量更新顺序(c=a+b → a=b → b=c,顺序不能乱)
if边界判断(n=1或2直接输出1,否则进入for循环)
for循环起点(从i=3开始,到i<=n结束)

📝完整代码参考(兔子农场模拟器)

#include <iostream> using namespace std; int main() { int n; cout << "请输入月份数:"; cin >> n; int a = 1; // 第1个月兔子对数 int b = 1; // 第2个月兔子对数 int c; // 临时变量,存当月兔子数 if(n == 1 || n == 2) { cout << "第" << n << "个月有1对兔子" << endl; } else { for(int i = 3; i <= n; i++) { c = a + b; // 当月 = 前两个月之和 a = b; // 更新:上个月→上上个月 b = c; // 更新:当月→上个月 } cout << "第" << n << "个月有" << b << "对兔子" << endl; } return 0; }

运行示例

请输入月份数:6 第6个月有8对兔子 请输入月份数:10 第10个月有55对兔子 请输入月份数:1 第1个月有1对兔子

变量跟踪表(n=6)

循环轮次ia(上上月)b(上月)c=当月更新后a更新后b
初始-1(第1月)1(第2月)---
第1轮311212
第2轮412323
第3轮523535
第4轮635858

💡可拓展授课知识点与思路

拓展A:输出每个月的兔子数

在for循环内每月都输出一次结果,让学生看到1,1,2,3,5,8...的完整序列。可以在循环体内加cout输出当前i月和b的值。这是提高题,帮助学生理解递推过程。

拓展B:黄金比例探索

让学生在循环内输出b/c的比值(注意要转成浮点数),观察比值如何从1.0→0.5→0.667→0.6→0.625→0.615...逐渐趋近0.618。用整数除法会得到0,需要用1.0*b/c转浮点。这是挑战题。

拓展C:递推vs递归

简单介绍递归概念:f(n)=f(n-1)+f(n-2)直接写成函数自己调用自己。但递归会重复计算很多次,效率低。我们用三个变量递推的方法效率高得多。为后续学习递归做铺垫。

拓展D:故意写bug让学生debug

故意把变量更新顺序写反(a=b在前,c=a+b在后),让学生运行后发现结果不对,分析为什么。重点让学生理解"顺序"在赋值语句中的重要性。

拓展E:斐波那契数列的大自然

展示向日葵种子螺旋、鹦鹉螺壳、花瓣数量等图片,让学生感受数学之美。可以让学生课后观察生活中有没有斐波那契数列的例子。

拓展F:兔子问题的历史

介绍斐波那契是800年前意大利数学家,他在《算盘全书》中提出了这个兔子问题。这个数列后来被发现广泛存在于自然界和艺术中,被称为"大自然的密码"。

📐板书设计

第X课 斐波那契的兔子农场
一、兔子繁殖规律
  第1月:1对(幼兔) 第2月:1对(成年) 第3月:2对
  第4月:3对 第5月:5对 第6月:8对...
  规律:当月 = 上月 + 上上月

二、三个变量(关键!)
  a=上上个月 b=上个月 c=当月
  c = a + b; // 算当月
  a = b; // 后移一个月
  b = c; // 后移一个月

三、边界与循环
  if(n==1 || n==2) 直接输出1
  else for(i=3; i<=n; i++) 递推

四、斐波那契数列
  1,1,2,3,5,8,13,21,34,55,89,144...
  相邻比值 → 0.618 黄金比例

⚠️教学注意事项与常见问题

时间把控

兔子繁殖规律讨论环节学生可能很兴奋,控制在10分钟内。代码填空环节给足12-15分钟,不要催促。黄金比例讨论可以作为延伸,不要花太多时间。

概念难度

递推思想本身不难理解,但"变量更新顺序"是最大难点。一定要用具体例子(第3个月、第4个月)逐步演示a和b怎么变化,让学生看到"滑动窗口"的效果。

代码填空设计

7个填空点覆盖:a初始值、b初始值、if条件、for起始值、c=a+b、a=b、b=c。重点填递推核心步骤,语法细节预先写好。

易错点强调

必须反复强调"a=b; b=c"的顺序——这是学生最容易犯的错误。可以现场演示顺序写反时结果会怎样(变成c=2*b,数列变成1,1,2,4,8...错误)。同时强调for从i=3开始,不是i=1。

硬件准备

确保每台电脑C++编译环境正常,课前测试运行无误。可以准备兔子玩偶或图片辅助故事引入。

差异化教学

理解较慢的学生可以提供"半完成代码",只填3-4个空(c=a+b, a=b, b=c三个核心);学有余力的学生布置输出每月数据、黄金比例等拓展任务。

📊评价标准

评价维度优秀(A)良好(B)需努力(C)
递推概念能准确说出f(n)=f(n-1)+f(n-2),解释为什么能说出基本规律,理解大概思路对递推概念模糊
变量更新理解a=b;b=c顺序的重要性,能解释顺序写反的后果能正确写更新代码,但说不清原因变量更新经常出错或顺序混乱
代码实现独立完成所有填空,代码运行正确,理解if边界和for起点能完成大部分填空,少量错误需提示填空困难,需要大量帮助
课堂参与积极参与兔子繁殖讨论,主动思考和提问能参与课堂活动,偶尔发言参与度低

📝 课堂点评(家长端)

📚 第X课《斐波那契的兔子农场》课堂点评 ━━━━━━━━━━━━━━━━━━━━ 🎯 本节课学习重点: 1. 斐波那契数列:1,1,2,3,5,8,13,21,34,55... 2. 递推公式:当月兔子数 = 上个月 + 上上个月 3. 三个变量a/b/c的递推更新:c=a+b; a=b; b=c 4. if边界判断:第1、2个月都是1对兔子 5. for循环从第3个月开始递推计算 ━━━━━━━━━━━━━━━━━━━━ 🌟 孩子课堂表现: - 上课认真听讲,积极参与兔子繁殖规律的讨论 (๑•̀ㅂ•́)و✧ - 对"兔子越生越多"的递推规律理解很快,能主动推算每个月的数量 - 代码填空环节思考认真,遇到变量更新顺序问题会主动提问 - 调试环节表现不错,能根据运行结果逐步修正代码 - 对黄金比例和自然界中的斐波那契很感兴趣,有探索精神 🚀 ━━━━━━━━━━━━━━━━━━━━ 📝 知识点掌握情况: - 斐波那契数列规律:掌握较好 - 递推公式c=a+b:理解到位 - 变量更新顺序a=b;b=c:基本掌握,建议再巩固为什么不能写反 - if边界判断和for循环起点:能正确填写 - 代码填空7个:完成情况良好 ━━━━━━━━━━━━━━━━━━━━ 💡 课后建议: 1. 复习变量更新顺序为什么不能写反,可以用第3、4个月手动推演一遍 2. 可以尝试输出前10个月每个月的兔子数,观察数列规律 3. 完成学生端拓展任务的代码填空,巩固for循环和递推 4. 生活中可以留意向日葵、花瓣等,看看能不能发现斐波那契数列 ━━━━━━━━━━━━━━━━━━━━ 加油!递推思维是非常重要的算法基础,掌握了对以后学习递归、动态规划都很有帮助!(ง •_•)ง
💡 提示:点击"一键复制点评"后,可直接粘贴到微信发送给家长,格式已优化无特殊符号

🔄教学反思(课后填写)

1. 兔子繁殖规律讨论效果如何?学生是否理解"当月=上月+上上月"?

(课后记录)

2. 变量更新顺序a=b;b=c学生理解了吗?是否需要更多例子?

(课后记录)

3. 代码填空完成度如何?哪个空错误率最高?

(课后记录)

4. 下节课需要复习或补充什么内容?

(课后记录)

🎬 课后总结动画 — 本节课知识点回顾
🐰
兔子繁殖
第2月成年,第3月开始每月生一对
🔢
斐波那契数列
1,1,2,3,5,8,13...每项=前两项之和
🔄
递推公式
c=a+b; a=b; b=c(顺序不能乱!)
for循环
从i=3开始,到i<=n结束,逐月递推
📏
if边界
n=1或2直接输出1,否则进入循环
黄金比例
相邻比值趋近0.618,大自然的密码