使用递归的泰勒级数展开中的问题

Problem in Taylor series expansion using Recursion

我编写了以下代码来使用递归求泰勒级数求和。虽然我得到了正确的结果,但我的问题是 静态变量 s (在代码中声明并赋值 1)无论 s 的值是什么 我选择输出结果与我正在使用的代码块 IDE 相同。

   #include<iostream>
using namespace std;
double e(int x, int n)
{
 static double s=1;
 if(n==0)
 return s;
 s=1+x*s/n;
 return e(x,n-1);

}
int main(){
cout<<e(5,100);
}

你能解释一下这是怎么回事吗?

这更像是一门数学 "problem" 而不是 C 语言,这是由于序列的数值稳定性

sn = 1 + x * sn + 1 / n

在你的函数体中使用。

考虑以下 table,其中显示了 s 的一些 n 值,对于不同的起点(0.1、1、10、100)和 x = 5:

=======================================================
                              s
   n     0.100000    1.000000   10.000000  100.000000
-------------------------------------------------------
  100    1.005000    1.050000    1.500000    6.000000
   99    1.050758    1.053030    1.075758    1.303030
   98    1.053610    1.053726    1.054886    1.066481
   97    1.054310    1.054316    1.054376    1.054973
   96    1.054912    1.054912    1.054915    1.054947
   95    1.055522    1.055522    1.055522    1.055524
   94    1.056145    1.056145    1.056145    1.056145
   93    1.056782    1.056782    1.056782    1.056782
  ...    ...         ...         ...         ...
   10    1.877638    1.877638    1.877638    1.877638
    9    2.043132    2.043132    2.043132    2.043132
    8    2.276958    2.276958    2.276958    2.276958
    7    2.626398    2.626398    2.626398    2.626398
    6    3.188665    3.188665    3.188665    3.188665
    5    4.188665    4.188665    4.188665    4.188665
    4    6.235832    6.235832    6.235832    6.235832
    3   11.393053   11.393053   11.393053   11.393053
    2   29.482632   29.482632   29.482632   29.482632
    1  148.413159  148.413159  148.413159  148.413159
-------------------------------------------------------