2.1什么是递归
1.递归的定义
- 递归:在函数的定义中又调用函数自身的方法。
- 尾递归:递归调用函数在最后一句语句
- 递归满足条件:
①可以由大问题转换成小问题
②调用次数有限
③有结束递归的语句 - 什么时候使用递归?
①定义是递归的:费布那切数列,求n!阶乘
② 数据结构是递归的:单链表,二叉树
③问题的求解方法是递归的:Hanoi问题
Hanoi问题
- 递归模型:反映的是递归问题的递归结构
递归模型=递归出口(什么时候结束)+递归体(递推关系)
递归出口
递归体
总结:
每递归调用一次,就需进栈一次,最多的进栈元素个数称为递归深度,当n越大,递归深度越深,开辟的栈空间也越大。
每当遇到递归出口或完成本次执行时,需退栈一次,并恢复参量值,当全部执行完毕时,栈应为空。