我已经在这个问题上挣扎了一个星期,我只需要一些关于数学部分的指导。如果我能理解它背后的数学,我可以将这些功能拼凑起来以使其工作。作业是;
设计和开发用于在delta <= 0.000001 时计算e(n)的C ++程序
delta = e(n) - e(n-1)
您没有对该计划的任何输入。你的输出应该是这样的:
您必须使用递归函数调用。
我的第一个问题是数学和包含它们的变量。
有人能指出我在这个问题上的正确方向吗?
谢谢,
Ť
答案 0 :(得分:1)
从wikipedia链接,您可以看到
我不会在这里解释限制的概念,但这基本上意味着,如果我们定义一个函数 e ,其中e(n) = 1 + 1/1! + 1/2! + 1/3! + 1/4! + … + 1/(n)!
(这是你问题中给出的函数) ,我们能够近似常数 e 的实际值。
n 越高,我们越接近 e 。
如果你仔细观察这个函数,你会发现每次我们都添加一个小于前一个的术语:1 >= 1/1! >= 1/2! >= .... >= 1/(n)!
这基本上意味着,每当我们增加 n 时,我们就越接近 e ,但我们正在放慢速度。
e 的实际价值是2.71828 ......
正如你所看到的,我们正在到达那里,但越接近,我们就越慢。现在让我们说在每一步,我们都想知道我们与之前的值相比有多接近。
然后我们只做e(n) - e(n-1)
。这基本上是 delta 的含义。
在某些时候,我们的行动非常缓慢,以至于继续前行已经没有任何意义了。我们几乎待在这里。此时,我们认为我们的近似值与 e 足够接近。
在您的情况下,问题将最小进展速度定义为0.000001
答案 1 :(得分:0)
这是一个解决方案: -
delta = e(n) - e(n-1)
delta = 1/n!
delta < 0.000001
n! > 1000000
n >= 10 as 10! = 3628800