递归算法

来源:互联网 发布:西门子软件质量规范 编辑:程序博客网 时间:2024/06/06 07:41

参考一个博客地址:http://blog.csdn.net/luoweifu/article/details/8509688

1、递归简单定义:程序调用自身的编程技巧。

      分类为直接递归,也就是程序在执行过程中直接调用自身。

                  间接递归,程序在执行过程中,调用别的函数,再间接调用到自身。


2、递归的特性

      1、必须有最终可到达的终止条件,否则死循环

      2、子问题在规模上比原问题小,或者接近终止条件

      3、子问题可通过再次递归调用求解或者满足终止条件求解

      4、子问题的解应能组合成整个问题的解


3、并不是所有的问题都能用递归来解决。

      分析问题能否用递归解决,两个条件:

      1、递归公式。

      2、退出条件。最后能分解为有确定解的问题。


4、具体应用

      1、阶乘。  n! =  n * (n-1) * (n -2) * ... * 2 * 1

      2、菲波那切数列。  1 ,1, 2, 3, 5, 8, 13... 

      3、阿克曼函数。 试试吧。很有意思。递归导致堆栈溢出。

      4、汉诺塔。   等等