python编程计算1!+2!+...+10!_如何用C语言编程计算 1!+2!+3!+…+10!?

解决这个问题,首先要明白阶乘。

n!=n*(n-1)*(n-2)*……*1;就是自己乘以自己减一,一直乘到一。

循环实现

这个过程必定是一系连续相乘的过程,一直重复着“乘”这个动作,说到这里肯定会要用到循环。

好了,接下来看代码,问题是1到10的阶乘相加,这里一个循环肯定不够用啊,势必要用到循环的嵌套。

外层循环实现的是每一个数的阶乘想加,内层循环的功能是求每一个数的阶乘。

#include

int main()

{

int n;

printf("请输入要求阶乘和的数:\n");

scanf("%d",&n);

int sum=0;

int cheng=1;

int i,j;

for(i=1;i<=n;i++)

{

for(j=1;j<=i;j++)

{

cheng*=j;

}

sum+=cheng;

cheng=1;

}

printf("%d的阶乘是%d",n,sum);

return 0;

}

递归实现

数学里学过数列吧!数列里有一个递推公式。

递推公式就是:已知一个数列的第一项,除了第一项之外的每一项都和前面一张有一定关系,所以我们知道第一项就能推算出每一项了。

我们来递推公式来表示阶乘,我们想求n的阶乘,n!=n*(n-1)!,那么我们就要知道(n-1)的阶乘,就要知道(n-2)的阶乘,即就是:(n-1)!=(n-1)*(n-1-1)!

这样依次此类推会递推到(n-n+1)的阶乘,也就是1的阶乘。

在C语言中递归,就是函数本身调用自己,就是同一个函数调用同一个函数。我们定义一个名叫digui的函数来完成这项工作。

#include

int digui(int n);

int main()

{

int n;

printf("请输入要求阶乘和的数:\n");

scanf("%d",&n);

int i;

int sum=0;

for(i=1;i<=n;i++)

{

sum+=digui(i);

}

printf("%d的阶乘是%d",n,sum);

return 0;

}

int digui(int n)

{

if(n==1)

{

return 1;

}

else if(n>1)

{

return n*digui(n-1);

}

}

你可能感兴趣的:(python编程计算1!+2!+...+10!_如何用C语言编程计算 1!+2!+3!+…+10!?)