为什么下面这段代码输出总是0
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double pi=1,c;
int i=1;
while(1){
if(i%2==0)c=(double)i/(double)(i+1);
else c=(double)(i+1)/(double)i;
pi=pi*c;
i++;
if(c<1e-6)break;
}
cout << 2*pi<< endl;
return 0;
}
算法错误。随着i的增大,c的值接近1,不可能出现c<1e-6的情况。
题目描述不清,给出参考程序如下:
#include <iostream>