递归
递归定义
递归是一种解决问题的思想,一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
递归执行过程
最好的说明可能是图,斐波那契数列执行过程:
重要概念
相关递归概念:
递归函数,递归过程
直接递归:函数直接调用自身;间接递归:函数调用其他函数时又产生对自己的调用
尾部递归函数:函数所做的最后一件事情是函数调用。随着被调用次数增加不会增加对栈空间的使用。
递归应用
定义递归:树、阶乘、斐波那契数列
存储递归:树、链表、数组
问题方法递归:分治法(八皇后、汉诺塔)
递归程序到非递归的转换
简单转换*
直接求值,无需回溯
递推求解——递归求解
递推求解是已知最小问题,然后由最小问题向上求解。
递归求解是已知分解最小问题条件,然后从上至下分解问题。
复杂转换
不能直接求值,必须试探回溯
用栈记录管理回溯点