算法设计与分析—递归算法.ppt

* 保存方法:   递归函数被调用时,系统在运行递归函数前也要保存上述两类信息。但因为递归的函数的运行特点,是最后被调用的函数要最先被返回,若按非递归函数那样保存信息,显然要出错。 由于堆栈的后进先出特性正好与递归函数调用和返回的过程吻合,因此,高级程序设计语言利用堆栈保存递归函数调用的信息,系统用于保存递归函数调用信息的堆栈称为运行时栈。 运行时栈示意图 栈顶 栈底 局部变量m 返回地址m 参 数m …… …… …… 局部变量2 返回地址2 参 数2 局部变量1 返回地址1 参 数1 * 递归函数被调用时,在每进入下一层递归调用时,系统就建立一个新的工作记录,并把这个工作记录进栈成为运行时栈新的栈顶;每返回一层递归调用,就退栈一个工作记录。 因为栈顶的工作记录必定是当前正在运行的递归函数的工作记录,所以栈顶的工作记录也称为活动记录。 工作记录 活动记录 运行时栈示意图 栈顶 栈底 局部变量m 返回地址m 参 数m …… …… …… 局部变量2 返回地址2 参 数2 局部变量1 返回地址1 参 数1 我们以计算阶乘的递归函数为例,说明递归函数调用时运行时栈中工作记录的变化过程。 * long Fact( int n) { int x; long y;

文档评论(0)

1亿VIP精品文档

相关文档