你的代码逻辑基本正确,但在计算 e 的近似值时存在误差。这是因为浮点数在计算机中是以二进制表示的,无法精确地表示某些十进制小数。
解决这个问题的方法是使用一个变量 sum 来保存每一项的结果,并在循环结束后将 sum 输出,并保留三位小数。
修改后的代码如下:
- #include <iostream>
- #include <iomanip>
- using namespace std;
- int factorial(int n)
- {
- if(n == 0)
- return 1;
- else
- return n * factorial(n - 1);
- }
- int main()
- {
- double e = 1.0;
- int i;
- for(i = 1; i <= 100; i++)
- {
- e += 1.0 / factorial(i);
- }
-
- cout << fixed << setprecision(3) << e << endl;
-
- return 0;
- }
复制代码
这段代码能够计算出前100项相加的结果,并输出近似的 e 值,保留三位小数。注意使用了 `<iomanip>` 头文件中的 `setprecision` 函数来设置输出精度。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。