1递归的定义
子程序(或函数)直接调用自己或通过一系列调 用语句间接调用自己,是一种描述问题和解决问
题的基本方法。
2递归的基本思想
问题分解:把一个不能或不好解决的大问题转化 为一个或几个小问题,再把这些小问题进一步分 解成更小的小问题,直至每个小问题都可以直接 解决。
3递归的要素
递归边界条件:确定递归到何时终止,也称 为递归出口;
⑵递归模式:大问题是如何分解为小问题的, 也称另递询命。
例1阶乘函数
? | 1 当 n = l 时
L n * (n - 1)! 当 nl 时
递归算法
int fact (int n )
{
if (n == 0 ) return 1; else return n * fact (n-1);
}
栈的应用举例一递归
求解阶乘n!的过程
返回24返回6
返回24
返回6
返回2
返回1
f -
V 递归调用
回归求值
递归过程与递归工作栈
■递归过程在实现时,需要自己调用自己。 层层向下递归,返回次序正好相反:
递归调用
?
n! = (n-1)! = (n-2)!㈡ ?= 1!=1
返回次序
递归函数的内部执行过程
运行开始时,首先为递归调用建立一个工作栈, 其结构包括 ;
每次执行递归调用之前,把递归函数的值参和局 部变量的当前值以及调用后的返回地址压栈;
每次递归调用结束后,将栈顶元素出栈,使相应 的值参和局部变量恢复为调用前的值,
原创力文档

文档评论(0)