我正在编写一个计算 e^x 值的方法。我在 python 中实现的方法如下。
import math
def exp(x):
return sum([
x**n/math.factorial(n)
for n in range(0, 100)
])
Run Code Online (Sandbox Code Playgroud)
这将很好地返回 e^x 的值。但是当我尝试在 c# 中实现相同的方法时,它没有输出与 python 中相同的值。下面是c#中的实现。
static double exp(int x)
{
double FinalAnswer = 0;
for (int j = 0; j <= 100; j++)
{
FinalAnswer += (Math.Pow(x, j))/Factorial(j);
}
return FinalAnswer;
}
Run Code Online (Sandbox Code Playgroud)
该代码的输出最初是一个无穷大符号。为了解决这个问题,我只是减少了循环运行的次数。C# 中循环仅运行 10 次的代码的输出与 Python 中循环运行 100 次的输出非常接近。我的问题是不同编程语言的两个循环之间发生了什么。起初我认为我在计算 e^x 的方法中使用的表达式收敛得很快。但是运行 10 次的循环如何产生与运行 100 次循环的输出相匹配的输出。
另外,当我将 c# 中的 for 循环增加到 20 和 30 时,x > 3 的 e^x 值相差很大。有人可以解释一下这是怎么回事吗?