当前课程知识点:C语言程序设计(下) > 第二周:函数(二) > 函数递归调用 > 6.5.8 递归总结
通过刚才的几个例题
我们不难看出
递归可以分成这样两大类问题
一类是解决数值类的问题
比如说
求一个非负整数n的阶乘
或者是求
斐波那契数列的第N项
或者是
求两个数的最大公约数
解决这类问题的共同的特点是
由于问题可以表达成数学公式
那么我们就可以从相应的公式入手
推导出
解决这个问题的递归的定义
然后还要确定
这一个问题的边界条件
从而找到结束递归的条件
那么第二类大的问题是
非数值类问题
它本身是很难找到数学公式表达的
比如说八皇后问题
汉诺塔问题
对于这种第二类的非数值型的问题
本身
不容易找到数学公式
就要找到其它的方法
具体来说
如果能够找到
解决这种问题的
一系列的递归操作步骤
就可以解决这样的
非数值算法问题
更具体地说
首先我们可以将问题化简
也就是说
把原来的问题的规模
缩小到最小
分析
这样的问题在最简单的情况下
是如何解决的
比如说
如果我们想解决
n块盘子在三个杆上的
这种汉诺塔问题
我们可以首先将其简化为
两块盘
三块盘
有了这样简单的方法
我们就可以把原来的问题
分解成若干个小问题
其中至少有一个小问题
具有跟原来问题相同的性质
只是在规模上缩小了
分解后的小问题
作为一个独立的问题
来描述这些较小的问题的解决方案
然后形成
对原来较大问题的算法
由这样推广
就可以得到
解决递归问题的
非数值类问题的这样的算法
后面我们进一步的
来看一些其它的例子
大家一起来做一些练习
-1.1 函数定义
--内容简介
--函数是什么
--例题演示
--知识点总结
-1.1 函数定义--作业
-1.2 模块化程序设计
-1.3 函数调用、声明和返回
--函数调用的过程
--函数嵌套调用
-1.4 函数间参数传递
--形参与实参值传递
--小结
--html
-1.4 函数间参数传递--作业
-函数递归调用
--html
--html
--html
--html
--html
--html
-函数递归调用--作业
-3.1 变量存储属性
--开场
--局部变量全局变量
--存储类别小结
--html
--html
--html
--html
--html
-3.1 变量存储属性--作业
-3.2 编译预处理
--编译预处理开头
--编译预处理内容
--库函数
--函数总结
--综合例子
--html
-3.2 编译预处理--作业
-4.1 指针的定义、初始化和引用
--本周内容简介
-4.1 指针的定义、初始化和引用--作业
-4.2 指针与数组
--指针与数组
--Video
-4.2 指针与数组--作业
-5.1 指针与字符串
--本周开篇介绍
--指针与字符串
--指针与字符串小结
-5.1 指针与字符串--作业
-5.2 多维数组指针
--指针与多维数组
--html
--html
--html
--html
--html
--html
--html
--html
-5.2 多维数组指针--作业
-6.1指针与函数
--本周开篇介绍
--指针指向函数
--返回指针值的函数
--html
--html
--html
-6.1指针与函数--作业
-6.2指针与指针
--引入指针数组
--指针数组
--二级指针
--指针内容小结
--html
--html
--html
--html
-6.2指针与指针--作业
-7.1 结构的概念
--Video
--Video
--Video
--Video
--html
--html
-7.1 结构的概念--作业
-7.2 结构数组
--Video
--Video
--html
-7.2 结构数组--作业
-7.3 结构指针
--Video
--Video
--Video
--html
-7.3 结构指针--作业
-7.4 结构与函数
--Video
--html
-7.4 结构与函数--作业
-7.5 联合
--Video
--Video
--html
-7.5 联合--作业
-8.1 typedef自定义类型
--自定义类型
-8.1 typedef自定义类型--作业
-8.2 枚举类型
--枚举类型
-8.2 枚举类型--作业
-8.3 链表的概念
--为什么使用链表
--链表的定义和功能
-8.3 链表的概念--作业
-8.4 链表的基本操作
--创建链表的步骤
--创建链表的过程
--访问链表中的节点
--约瑟夫问题
--html
--html
-8.4 链表的基本操作--作业
-9.1 文件概述
--文件概念
--文件分类
-9.1 文件概述--作业
-9.2 文件型指针
--文件结构与指针
--设备文件
--html
-9.2 文件型指针--作业
-9.3 文件的打开与关闭
--文件读写方式
--文件读写操作
-9.3 文件的打开与关闭--作业
-9.4 文件的顺序读写
--字符串输入输出
--html
-9.4 文件的顺序读写--作业
-9.5 文件的随机读写
--文件随机读写
-9.5 文件的随机读写--作业
-9.6 文件检测
--文件检测
-9.6 文件检测--作业
-9.7 文件应用实例
--文件应用实例
--html
--html
-10.1 C语言知识总结
--程序调试概念
--软件测试方法
--程序跟踪调试
--C语言语法要点
--标识符及运算符
--程序设计流程
--数组、函数及指针
--结构和文件
-10.1 C语言知识总结--作业
-10.2 C语言练习
--程序设计方法
--图像合成例子
--html
-期末考试复习题
--html
-期末考试复习题答案
--html