5.11打卡
一、问题描述:
计算下列多项式的值:
S=1+1/1×2+1/1×2×3+...+1/1×2×3×...50
例如,从键盘输入50后,输出为1.718282
二、设计思路:
n的阶乘算法如下:n!=1×2×3×4×5×……×n,可用循环来实现,代码如下:for(j=1;j<=i;j++) /*i为对应的项数*/
t=t*j; /*t表示每一项的分母*/
对于每一项都是求出其分母即项数i对应的阶乘,是一个循环重复的过程,所以可用另外一层循环来控制项数,范围为1~n,代码如下:
for(i=1;i<=n;i++) /*i为每个分式对应的标记*/
…
)
对于存储阶乘的变量t,每一次记录新的阶乘之前都要把其值赋为1,否则下一项的阶乘值会受上一项的影响,所以在每次执行内层循环求下一项阶乘之前,要把t的值再次赋为1:t=1;。
三、程序流程图
四、代码实现
#include<stdio.h>
int main()
{
double s=0,t;
int i,n,j;
printf("please input the number of n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t=1;
for(j=1;j<=i;j++)
t=t*j;
s=s+1/t;
}
printf("%f",s);
}