试图用阶乘法简化表达

时间:2014-10-17 23:29:58

标签: math

首先,如果有更好的方法来格式化数学方程式,我道歉,我找不到任何东西,但唉,表达式很短。

作为已分配问题的一部分,我必须在C中生成一些将评估x ^ n / n的代码!对于任意x,并且n = {1-10,50,100}

我总是可以用大量的数据库来强制它,但是我想知道如果有一个比我更好的数学技能的人可以建议一个比O(n!)更好的算法......

据我所知,我可以将分子分割为x ^(n / 2) x ^(n / 2),得到n的偶数值,x x ^(n-1/2) * x ^(n-1/2)表示n的奇数值。并且我可以进一步将其更改为n / 2的对数基数x。

但我因多种原因而陷入困境:

1 - 我不认为计算上任何这些变化实际上会产生很大的不同,因为它们并没有真正帮助我减少我必须执行的大量乘法或它们的总数。

2 - 即使我想到了n!作为1 * 2 * 3 * ... *(n-1)* n,我仍然无法合理化简化整体方程的好方法。

3 - 我已经看过Karatsuba的乘法算法,虽然它有可能,但对于编程问题的介绍似乎有点复杂。

所以我想知道你们是否可以想到任何中间立场。如果你有时间,我更喜欢解释直接答案:)

干杯,

1 个答案:

答案 0 :(得分:2)

我的建议是计算求和的所有项(将它们放在一个数组中),然后以相反的顺序(即从最小到最大)求它们 - 这会略微减少舍入误差。

请注意,您可以通过乘以k计算前一个词的x/k个词 - 您无需直接计算x^nn! (这个很重要)。