pta** 求幂级数展开的部分和**运行超时

pta题目** 求幂级数展开的部分和**运行超时
7-15** 求幂级数展开的部分和**

img

输入格式:
输入在一行中给出一个实数x∈[0,5]。

输出格式:
在一行中输出满足条件的幂级数部分和,保留小数点后四位。

输入样例:
1.2
输出样例:
3.3201
时间限制
400 ms


```c
#include 
#include 

int main()
{
    double x,xk,sum=1,k=1,i=1;
    scanf("%lf", &x);
    xk=x;
    while (fabs(xk/k)>= 0.00001)
    {

        sum+=xk/k;
        xk*=x;
        i++;
        k*=i;
    }
    sum+=xk/k;
    printf("%.4lf\n", sum);
}



###### 运行内容超时
###### 用一般算阶乘的方法做,还是超时了,我看到有的博主方法跟我的大相径庭但却是对的

```c
#include 
#include 

int main()
{
    double x,xk,sum=1,k=1,i=1;
    scanf("%lf", &x);
    xk=x;
    while (fabs(xk/k)>= 0.00001)
    {

        sum+=xk/k;
        xk*=x;
        i++;
        k*=i;
    }
    sum+=xk/k;
    printf("%.4lf\n", sum);
}


不能理解,难到for语句运行时间长一些?

希望各位指点一下我这个蒟蒻

我目前看到一个可以改进的地方,就是那个xk/k 你发现没有,在while里面计算了一次,在下面的两个sum那里计算了两次,可以用一个变量存储这个值。这样就只用计算一次了。望采纳哦!!