考虑以下几点:评估和打印阶乘
double fact(int n)
{
int i;
double res = 1;
for (i = 1; i <= n; i++)
res *= i;
return res;
}
double f = 1;
for (int i = 0; i < 16; i++)
{
printf("%lf \n", fact(2*i + 1));
f *= (f + 1)*(f + 2);
printf("%lf \n", f);
}
为什么fact(2*i+1)
结果的正确值,而f
结果1.#INF00
一个奇怪的值?
据我所看到的,其实' ()'是一个函数,'f'是代码中的一个变量和一个无意义的'for'循环。你介意一点点? – 2015-04-06 07:48:02