黑马程序员技术交流社区

标题: 递归 [打印本页]

作者: 胡元江    时间: 2013-2-16 19:57
标题: 递归
递归

    一个算法调用自己来完成它的部分工作,在解决某些问题时,一个算法需要调用自

身。如果一个算法直接调用自己或间接地调用自己,就称这个算法是递归(Recursive).
   根据调用方式不同,它分为直接递归(Direct Recursion)和间接递归Indirect

Recursion)

     比如,在收看电视节目时,如果演播室中也有一台电视机播放的是与当前相同的

节目,观众就会发现屏幕里的电视套有一层层的电视画面。这种现象类似于直接递归。
     如果把二面镜子面对面的摆放,便可从任意一面镜子里看到两面镜子无数个影像

,这类似于间接递归。

   一个递归算法必须有二个部分:初始部分(Base Case)和递归部分(Recursion

Case)初始部分只处理可以直接解决而不需要再次递归调用的简单输入。递归部分包含

对算法一的次或多次递归调用,每一次的调用参数都在某种程序鸡皮疙瘩比原始调用更

接近初始情况。
    函数的递归调用可以理解为:通过一系列的自身调用,达到某一终止条件后,再按

照调用路线逐步返回,递归是程序设计中强有力的工具,有很多数学函数是以递归来定

义的(求阶乘函数  n!)

    C#中实现


static void Main()
    {
        Console.WriteLine("请输入一个数字");
        int  a =int.Parse( Console.ReadLine());
        Console.WriteLine (factorial(a));
        Console.ReadKey();
        



    }
     public static long   factorial(int a ){

         if (a <= 1)
         {
             return 1;
         }
         else
         {
             return a * factorial(a - 1);

         }
         
     }
     
作者: 许庭洲    时间: 2013-2-18 09:08
值得学习ing!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2