求 s=1 + 1/2! +....+ 1/n!
输入1个正整数n,计算 s 的前n 项的和(保留 4 位小数)。要求定义并调用函数fact(n)计算n 的阶乘
#include <stdio.h>
int fact(int n)
{
long s=1;
if(n == 1)
s=1;
if(n != 1)
s=n*fact(n-1);
return s;
}
void main()
{
double sum = 0;
int i;
printf("请输入数字:");
scanf("%d",&i);
int n=1;
for(n;n<=i;n++)
{
sum += 1.0/fact(n);
}
printf("%.4f\n",sum);
}
本题fact部分用来计算数列中每一项的大小,先将s定义初值为1。
用if语句判断主函数调用时n值是否为1。如果为1则将s赋值为1;如果不为1,则采用s=n*fact(n-1)语句,在这里调用自身,反复进行该函数直到n为1
再让返回值为s,从而得到某一项的数值的大小
主函数部分对sum赋初值为0,从而确保算法的准确性,之后运用printf提示输入项数的多少,并运用循环语句反复调用fact函数,从而得到每一项的项数值并将每一项的项数值做累加
最后输出sum值,用%.4确保s的数值保留四位小数
此时sum值即为题目要求的s值