首页 > C/C++语言 > C/C++基本语法 > 递归简单应用
2010
05-15

/* —————————————- */
/*  递归算100个数相加                   */
/* —————————————- */
int factorial(int j)
{
   int sum;                       /* 相加总和变数          */

   if ( j == 1 )                  /* 终止条件              */
      sum = 1;
   else
      sum = j + factorial(j – 1);  /* 递归阶乘函数调用      */
   return sum;
}

/* —————————————- */
/*  主程式: 计算整数1到100的相加.      */
/* —————————————- */
void main()
{
   printf(“100=%d \n”,factorial(100));/*递归相加函数调用*/
}


递归简单应用》有 7 条评论

  1. whos 说:

    直接return吧

    int factorial(int j)
    {
       return (j==1?1:j + factorial(j – 1));
    }

    whos2010-05-15 10:35:59

  2. xkp 说:

    返回局部变量,肯定有问题。

  3. xkp 说:

    /* —————————————- */
    /*  递归算100个数相加
                      */
    /* —————————————- */
    int
    factorial(int j)
    {
      static int sum;                       /*
    相加总和变数          */

       if ( j == 1 )                  /*
    终止条件              */
          sum = 1;
       else
          sum = j +
    factorial(j – 1);  /* 递归阶乘函数调用      */
       return sum;
    }

    /*
    —————————————- */
    /*  主程式:
    计算整数1到100的相加.      */
    /* —————————————- */

  4. whos 说:

    在递归中返回局部变量并不错,也可以返回局部静态变量。两者的区别在于:使用局部变量时每递归一次就要在栈中存储一个递归的结果,递归次数多的话使用的栈单元也相应增多;使用局部静态变量的话整个递归过程只对这个局部静态变量进行操作,大大减少了存储空间的使用。

  5. 探索 说:

    看贴顶贴。

  6. fanyujin125 说:

    5楼说的对

  7. ityw 说:

    呵,递归,我高中时学就过期原理,但不知道该如何用C表达出来

留下一个回复