为乐。 2019-09-10 22:49 采纳率: 0%
浏览 290

大佬们看看我这个计算Π的近似值为啥没有输出,好像是死循环了但是不知道问题出现在哪儿!

#include <iostream>
#include <cmath>
using namespace std;
int main(){
    double pi = 0.0,term = 1.0,sign = 1.0,sum = 0.0;
    double limit = pow(10,-6);
    while(fabs(term)>limit){
        sum += term;
        sign = -sign;
        term = term + 2;
        term = (sign/term);
    }
    pi = 4*term;
    cout<<pi<<endl;
    return 0;
}

  • 写回答

1条回答 默认 最新

  • qtchen_1988 2019-09-11 10:04
    关注
     term = term + 2;
     term = (sign/term);
    

    你这里搞错了,term = (sign/term); 执行这个以后,term为分数,再term = term + 2,就不对了,应该分母加2;

    下面我稍稍改了下,运行结果正常;

    #include <iostream>
    #include <cmath>
    using namespace std;
    int main(){
        double pi = 0.0,term = 1.0,sign = 1.0,sum = 0.0;
        double limit = pow(10,-6);
    
        double item = term;
        while(fabs(item)>limit){ //pi/4=1-1/3+1/5-1/7......
            sum += item;
            sign = -sign;
            term = term + 2;
            item = (sign/term);
        }
        pi = 4*sum;
        cout<<pi<<endl;
        return 0;
    }
    
    
    评论

报告相同问题?

悬赏问题

  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题