递归与递推算法详解(C++版)教案——以斐波那契数列为例
递归与递推算法详解(C++版)教案——以斐波那契数列为例
教学目标
- 理解递归与递推的核心思想
- 掌握斐波那契数列的递归与递推实现
- 分析两种算法的性能差异
- 学会根据场景选择合适算法
教学重点与难点
- 重点:递归与递推的代码实现、执行过程分析
- 难点:递归调用栈的理解、时间复杂度的本质差异
教学准备
- C++编译环境(如Dev-C++、VS Code)
- 可视化递归调用工具(可选)
- 斐波那契数列数学定义:
F(0) = 0 F(1) = 1 F(n) = F(n-1) + F(n-2) (n≥2)
教学过程
1. 问题引入(5分钟)
情景创设:
“假设一对新生兔子,第2个月成熟,每月生一对新兔子。问第n个月有多少对兔子?”
→ 引出斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13…
数学定义:
F(0) = 0
F(1) = 1
F(n) = F(n-1) + F(n-2) // n ≥ 2
2. 递归算法详解(20分钟)
核心思想:将大问题分解为相同结构的子问题
三要素:
- 终止条件:
n=0
或n=1
- 递归调用:调用自身计算
F(n-1)
和F(n-2)
- 结果合并:返回子问题结果之和
代码实现:
#include <iostream>
using namespace std;int fib_recursive(