C语言求阶乘倒数之和
#include<stdio.h>
#if 0
double fun(int a)
{
int i,j;
double m,S=1.0;
for(i=2;i<=a;i++)
{
m=1.0;
for(j=1;j<=i;j++)//--变++不变也可
{
m*=j;//改了一下
}
S+=1.0/m;
}
return S;
}
#endif
//优化了一下
double fun(int a)
{
int i,j;
double m=1.0,S=1.0;
for(i=1;i<=a;i++)//从0算起,从1算起的话改回:for(i=2;i<=a;i++)
{
m*=i; // 求阶乘
S+=1.0/m;//倒数相加
}
return S;
}
main()
{
int n,sum;
scanf("%d",&n);
sum=fun(n);
printf("%d\n",sum);
c语言一到10的阶乘合算法
1. 合算2. 因为计算阶乘的算法相对简单,只需要使用循环结构即可。
对于C语言而言,可以使用for循环来计算阶乘,从1开始循环乘以每个数字,最后得到结果。
3. C语言计算阶乘的算法可以使用递归方式实现,也可以使用循环方式实现。
递归方式相对简洁,但可能会导致栈溢出的问题,而循环方式则更加稳定。
在实际编程中,可以根据具体需求选择合适的算法来计算阶乘。
所谓 n 的阶乘,就是从 1 开始乘以比前一个数大 1 的数,一直乘到 n,用公式表示就是:1×2×3×4×…×(n-2)×(n-1)×n = n!
1~10阶乘和C语言程序如下:visual C++6.0编译,仅供参考。
#include <stdio.h>
int fact(int num)
{
if(num>1)
{
return num*fact(num-1);
}
else
{
return 1;
}
}
int main()
{
int n;
int sum;
sum=0;
for(n=0;n<=10;n++)
{
sum+=fact(n);
}
printf("0!+1!+...10!=%d\n",sum);
return 0;
}
C语言怎样求1到100的阶乘和
利用for循环计算1~100的阶乘,将1~100的阶乘累加到sum中就是所求。;
#include<stdio.h>;
void main();{;int i;;double t=1,sum=0; //由于100的阶乘int和long int都放不下.所以用double.;
for(i=1;i<=100;i++) //从1循环到100.;{;t = t * i; //计算1~100的阶乘.;sum = sum + t; //将1~100的阶乘累加到sum中.;};
printf("%.0f ",sum)
; //输出sum.;};
利用for循环计算1~100的阶乘,将1~100的阶乘累加到sum中就是所求。