一 递归的定义
函数在运行中直接或者间接地调用自身函数
二 递归的设计
(1)将一个大规模问题分解为一个个小的问题(分之策略)
(2)确定终止条件(无需求解的最小子问题)
【例】非负整数n的阶乘可递归定义为:
三 栈和递归在内部的配合
(1)调用函数时:系统会为调用者构造一个由参数表和返回地址组成的活动记录,并将其压入到系统提供运行栈的栈顶,,然后将程序的控制权转移到被调用函数
若被调函数有局部变量,则在运行时刻栈的栈顶也要为其分配相应的空间。因此,活动记录和这些局部变量形成了一个可供被调函数使用的活动结构。
(2)被调函数执行完毕时:系统将运行时刻栈栈顶的活动结构退栈,并根据退栈的活动结构中所保存的返回地址将程序的控制权转移给调用者继续执行。