我正在编写一个C ++程序来计算一系列的总和:
所以我写了一个递归函数:
double func(int n)
{
if(n==1)
return 1;
else
return pow(1/n, n) + func(n-1);
}
对于以下系列,
如果n
为1
,则sum
为:1
如果n
为2
,则sum
为:1.25
当n
为3
时,sum
为1.3611
但上述代码执行时,会为1
的所有值返回n
。
有人请告诉我这背后的原因是什么?
答案 0 :(得分:2)
因为n
是一个整数,1/n
将始终产生一个整数结果,因为编译器推断出1是一个整数。
然而,将其更改为1.0/n
将产生双重结果。