使用递归的泰勒级数展开中的问题
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
-------------------------------------------------------
我编写了以下代码来使用递归求泰勒级数求和。虽然我得到了正确的结果,但我的问题是 静态变量 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 -------------------------------------------------------