第5章 递归
1、递归的基本概念与递归程序设计
- 递归:直接或间接的调用函数自己
- 递归程序的两个特色:
- 具有递归出口
- 在不知足递归出口的状况下,把原问题分解成若干子问题,子问题的求解经过必定的方式修改参数进行函数自身调用加以实现
2、递归程序执行过程的分析
- 略
3、递归程序到非递归程序的转换
- 递归程序和非递归程序的区别:相比较非递归程序,递归程序的空间需求和时间需求较高
3.1 简单递归程序到非递归程序的转换
- 简单递归程序:自顶向下产生计算序列
- 非递归程序:利用递推关系,自底向上产生计算序列
3.2 复杂递归程序到非递归程序的转换
- 复杂递归程序到非递归程序的转换:使用栈来记录和管理所设置的回溯点,当求解没法进行下去或当前处理的工做已经完成时必须退回到所设置的回溯点,继续问题的求解
4、递归程序设计的应用实例(大纲未规定)
- 略
5、算法设计题
5.1 打印结果—1\n22\n333\n...(真题)(算法)
试编写一个递归函数,以正整数 \(n\) 为参数,该函数所实现的功能为:在第 \(1\) 行打印输出 \(1\) 个 \(1\),在第 \(2\) 行打印输出 \(2\) 个 \(2\) \(,\cdots,\) 在第 \(n\) 行打印输出 \(n\) 个 \(n\)。算法
print(int n) {
int i;
if (n != 0) {
print(n - 1);
for (i = 1; i <= n; i++) printf("%d", n);
printf("\n");
}
}
6、错题集
- 略