我知道这必须是非常愚蠢的事情,但我真的找不到我的错误。
我正在尝试编写一个程序来计算(2 / i)^ i,其中i是用户输入的整数。如果i = 0,则函数返回1。
这是我一直在使用的功能。
double f (int x)
{
double y = 1.0;
if (x == 0)
return 1;
else
for (int i = 1; i <= x; i++)
y *= pow (2/i, i);
return y;
}
int main ()
{
for(int i=0;i<=10;++i)
cout << "f(" << i << ") =" << f(i) << endl;
}
double f (int x)
{
double y = 1.0;
if (x == 0)
return 1;
else
for (int i = 1; i <= x; i++)
y *= pow (2/i, i);
return y;
}
int main ()
{
for(int i=0;i<=10;++i)
cout << "f(" << i << ") =" << f(i) << endl;
}
现在..这应该是一个非常简单的代码。然而,它不起作用。它编译正确,但结果不是我所期待的。经过一些迭代后,我总是得到0。我做错了什么?
答案 0 :(得分:1)
整数师:
更改为:
y *= pow (2.0/i, i);
^^^
另外,为什么需要循环?