C语言-求阶乘和的两种方法

目录

方法一:递归法

方法二:循环法

fun.c文件

fun.h文件

main.c文件


方法一:递归法

 /** 递归法 求阶乘和
 *
 */
long Factorial_sum_way1(int m)
    {
     if(m==1)
        return 1;
    else  return Factorial_way1(m)+Factorial_sum_way1(m-1);

    }

方法二:循环法

/** 循环法 求阶乘和
 *
 */
long Factorial_sum_way2(int m)
    {
     long sum=0;
     int i=1;
     for(i=1;i<=m;i++)
        sum+=Factorial_way2(i);
        //sum+=Factorial_way1(i);
        return sum;
    }

fun.c文件

#include "fun.h"
/** 递归法 求阶乘
 *
 */
long Factorial_way1(int m)
    {

        if(m==1)
            return 1;
        else
        {
            return m*Factorial_way1(m-1);
        }
    }
 /** 递归法 求阶乘和
 *
 */
long Factorial_sum_way1(int m)
    {
     if(m==1)
        return 1;
    else  return Factorial_way1(m)+Factorial_sum_way1(m-1);

    }
/** 循环法 求阶乘
 *
 */
long Factorial_way2(int m)
    {
      long sum=1;
      int i;
      for(i=1;i<=m;i++)
            sum*=i;
     return sum;
    }
/** 循环法 求阶乘和
 *
 */
long Factorial_sum_way2(int m)
    {
     long sum=0;
     int i=1;
     for(i=1;i<=m;i++)
        sum+=Factorial_way2(i);
        //sum+=Factorial_way1(i);
        return sum;
    }

fun.h文件


#include "stdio.h"
long Factorial_way1(int m);
long Factorial_sum_way1(int m);
long Factorial_way2(int m);
long Factorial_sum_way2(int m);

main.c文件

#include "stdio.h"
#include "stdlib.h"
#include "fun.h"

void main()
{
 printf("%d\n",Factorial_sum_way1(6));
 printf("%d\n",Factorial_sum_way2(6));
}


版权声明:本文为qq_40893012原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。