我正在使用Dev c ++,我的代码在c中。
我想编写一个summ-calculator。汇总以下系列的术语数

1/1! + 2/2! + 3/3! + ....
术语取自输入

这是我的代码,但是当我运行它时挂起

#include<stdio.h>
#include<conio.h>
int main(void)
{
long i,j,facto=1,inp;
double sum=0;
scanf("%ld",&inp);
for (i=0;i<inp;i++)
{
    for (j=i;j>1;j--)
    {
        facto *= j;
    }
    sum += i / facto;
}
printf("%f",sum);

getch();
return 0;
}

最佳答案

您的代码有几个问题:


您根本不需要内部循环。这花费了很多时间,这可能就是为什么您不经常看到输出的原因(可能是挂起的原因)。这样做:

facto = 1;
for (i=1;i<=inp;i++)
{
    facto *= i;
    sum += i / facto;
}

由于ifacto都是int,因此i / facto大多数时候都是0。所以修改它。

sum += 1. * i / facto;

10-07 21:35