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;
c语言用递归函数求n的阶乘}
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);
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论