概念:所谓的递归调用就是函数内部调用自身的过程。
注意点:
递归必须要求有结束条件,不然就会陷入无限递归的状态,永远无法结束调用。
递归包括:递推和回归。递推是将原问题不断分解成子问题,直到达到结束条件,返回最近子问题的解;然后逆向逐一回归,最终到达递推开始的原问题,返回原问题的解。
实例:
1、阶乘是典型的递归调用问题
递归问题可以使用栈来实现。
结论:递推和回归的过程实际上就是一个入栈和出栈的过程。
2、斐波那契数列
假设要画出第五项的递归树:
第n项的递归树深度是多少?
n-1
结论:我们在递归的时候,使用的栈空间的大小就是递归树的深度。