我正在编写一个计算e^x值的方法.我在python中实现这一点的方法如下.
import math
def exp(x):
return sum([
x**n/math.factorial(n)
for n in range(0, 100)
])
这将很好地返回e^x的值.但是,当我try 在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;
}
该代码的输出起初是一个无穷大符号.为了解决这个问题,我只是减少了循环的运行次数.c语言中循环只运行了10次的代码输出与python中循环运行了100次的代码输出非常接近.我的问题是,在不同的编程语言中,两个循环之间发生了什么.起初,我认为我在计算e^x的方法中使用的表达式收敛得很快.但是,一个运行10次的循环如何生成与运行100次的循环的输出相匹配的输出呢.
此外,当我将c中的for循环增加到20和30时,e^x的值x>;3个离得太远了.有人能解释一下这是怎么回事吗?
我的Factorial
函数如下所示,当我try 打印它的结果以增加n
时,它会快速变为半随机值,而不是0.我怀疑这就是我的exp
行为错误的原因.
int Factorial(int n)
{
int factorial = 1;
for (int i = 1; i <= n; i++)
{
factorial *= i;
}
return factorial;
}