下载此文档

c语言(递归).ppt


文档分类:IT计算机 | 页数:约63页 举报非法文档有奖
1/63
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/63 下载此文档
文档列表 文档介绍
C语言程序设计 尹宝林
第四讲:递归
2005-1-2
1
C语言程序设计进阶
递归的概念和作用
概念或函数直接或间接引用自身
在可计算性理论中有重要的地位
递归可枚举
常用的重要机制
概念的表达
数据结构和算法的描述
重要的思维方式
现代程序设计语言中都提供支持
2005-1-2
2
C语言程序设计进阶
递归概念的例

树的非递归定义
连通且无圈的无向图
树的递归定义
一个节点是一棵树
一棵树的每个节点可以有m个分支,其中每一个分支都是一棵树
一棵树中的任意两个节点间只有一条通路
2005-1-2
3
C语言程序设计进阶
递归算法的例
排序
归并排序(merge sort)
最典型常用的实现方法是通过递归的定义
快速排序算法(quick sort)
直接通过递归定义
2005-1-2
4
C语言程序设计进阶
递归函数的例
直接引用的递归函数:对树的中序遍历
typedef struct t_node {
int value;
struct t_node *l_tree, *r_tree;
} t_node;
void treat_tree(t_node *treep, void (*op_func)(int))
{
if (treep == NULL)
return;
treat_tree(treep->l_tree, op_func);
op_func(treep->value);
treat_tree(treep->r_tree, op_func);
}
2005-1-2
5
C语言程序设计进阶
递归函数的例(续)
间接引用的递归函数
void a(int i)
{
……
b(i – 1);
}
void b(int i)
{
……
a(i);
}
2005-1-2
6
C语言程序设计进阶
递归函数的例(续)
递归曲线
Hilbert曲线
Sierpinski曲线
分形(fractal)
2005-1-2
7
C语言程序设计进阶
递归在程序设计中的例
程序设计语言的语法描述
Backus-Naur Form (巴克斯范式)
Algol、C、……
数据结构
控件
复杂的嵌套结构
……
2005-1-2
8
C语言程序设计进阶
递归的优点
概念清晰,易于理解
描述简单,易于实现
例:GUI中的嵌套的选单(Menu)
代码紧凑,易于维护
2005-1-2
9
C语言程序设计进阶
递归函数的缺点
在某些情况下计算复杂度较高
不适当的定义引起的重复计算
在某些情况下占用存储空间较多
深度递归调用引起的资源消耗
函数调用的开销
计算过程简单时函数调用开销的比例增加
2005-1-2
10
C语言程序设计进阶

c语言(递归) 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数63
  • 收藏数0 收藏
  • 顶次数0
  • 上传人ranfand
  • 文件大小188 KB
  • 时间2018-01-21