这是我为解决上述系列而编写的 C++ 程序:
#include <iostream>
#include <cmath>
#include <cstdlib>
using namespace std;
int factorial(int a)
{
if (a > 1)
return a * factorial(a - 1);
else
return 1;
}
float series(float x, int n, float b)
{
if (abs(pow(x, n) / factorial(n)) < pow(10, -6) || abs(pow(x, n) / factorial(n)) == pow(10, -6)) { return b; }
else return b = (pow(x, n) / factorial(n)) + series(x, n + 1, b);
}
int main()
{
float x;
cout << "Enter x: "<<endl;
cin >> x;
cout << "E^x = " << series(x,0,0);
system("pause");
return 0;
}
当 abs(x) < 2 时它工作正常,但当 abs(x) >= 2 时出现此错误:
33b.exe 中 0x00F02539 处的未处理异常:0xC00000FD:堆栈溢出(参数:0x00000001、0x00F22FF8)。发生了
我想知道为什么会发生这种情况,我该如何解决?