开始系统的学习算法,首先遇到了一个题目如下:
刚开始写的程序段如下:
但是当输入65536 655360时运行会出现以下的错误提示:
上网搜 发现:当 i>46340后,i*i 就溢出了int所能表达的最大数值,使得i*i值在截断为int时结果为0 (不是很懂)
1/0 结果自然是无穷大了
改进方法:法①:将 sum=sum+(double)1/(i*i); 改为 sum=sum+(double)1/i/i;
法②:将 i 改为 long long 型。
开始系统的学习算法,首先遇到了一个题目如下:
刚开始写的程序段如下:
但是当输入65536 655360时运行会出现以下的错误提示:
上网搜 发现:当 i>46340后,i*i 就溢出了int所能表达的最大数值,使得i*i值在截断为int时结果为0 (不是很懂)
1/0 结果自然是无穷大了
改进方法:法①:将 sum=sum+(double)1/(i*i); 改为 sum=sum+(double)1/i/i;
法②:将 i 改为 long long 型。