输出1/1! + 1/2! + 1/3! + … + 1/n!
/*
void GetResult(int InputNum, double *NumResult);
输入参数:
Int InputNum:输入一个正整数,进行表达式计算
char *NumResult:输出表达式的值
返回值:
void
*/
void GetResult(int InputNum, double *NumResult)
{
*NumResult = 0.0; //防止初始的随机,直接定义好
if(InputNum < 1)
{
//*NumResult = 0.0;
return;
}
/**NumResult = 0.0;*/
int cnt = 1;
//long int power = 1;//long int和int占的字节是一样的,4个,不能起到防止溢出的作用。可以改为long long 或double型
//long long power = 1;//long long型的提交测试也有一例不可以,只好用double型的了
//double power2 = 0;
double power = 1.0;
for(;cnt <= InputNum;++cnt)
{
for(int i = 1;i <= cnt;++i)
power *= i;
/**NumResult += (double)(1/power);*/ //必须有一个为双精度的才能得到双精度的结果
//power2 = (double)power;
/**NumResult += (double)(1/power2);*/
*NumResult += (double)(1.0/power);//用1.0来除,而不是1来除
power = 1.0;// 这步非常关键,必须每次都置1,才能下次是真正的阶乘,不然从上次的结果上乘的
}
return ;
}