递归算法
▪ 什么是递归(recursion)
– 程序调用自身的编程技巧称为递归。
– 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法
▪ 递归问题的特点
– 一个问题可被分解为若干层简单的子问题
– 子问题和其上层问题的解决方案一致
– 外层问题的解决依赖于子问题的解决
递归结构
▪ 递归结构包括两个部分:
– 递归结束条件。 什么时候并调用自身方法。如果没有条件,将陷入死 循环。
– 递归体。 什么时候需要调用自身方法。
▪ 递归示例
– 使用递归求n!
– 使用实现斐波那契数列
递归算法
▪ 递归的优点
– 简单的程序
▪ 递归的缺点
– 但是递归调用会占用大量的系统堆栈,内存耗用多,
– 在递归调用层次多时速度要比循环慢的多
▪ 递归的使用场合
– 任何可用递归解决的问题也能使用迭代解决。
– 当递归方法可以更加自然地反映问题,并且易于理解和调试,并且并强调效率 问题时,可以采用递归;
– 在要求高性能的情况下尽量避免使用递归,递归既花时间又耗内存
总结
▪ 递归
– 程序调用自身的编程技巧称为递归。
– 递归简单,但是内存耗用多,速度要比循环慢
– 任何可用递归解决的问题也能使用循环解决,反之并见得