第三章 栈和队列(3.4)
目录
3.4栈与递归
3.4.1采用递归算法解决的问题
1.递归的定义:
若一个对象部分地包含它自己, 或用它自己给自己定义, 则称这个对象是递归的;
若一个过程直接地或间接地调用自己, 则称这个过程是递归的过程。
long Fact ( long n ) {
if ( n == 0) return 1;
else return n * Fact (n-1); }
2.使用递归方法的情况:
2.1定义是递归的
很多数学函数是递归定义的,如:
2.2数据结构是递归的
某些数据结构本身具有递归的特性,则他们的操作可递归的描述,如
:
2.3问题的解法是递归的
还有一类问题,虽然问题本身没有明显的递归结构,但用递归求解比迭代求解更简单
3.4.2递归过程与递归工作栈
3.4.3递归算法效率分析
1、时间复杂度的分析
2、空间复杂度的分析