计算1和X之间的阶乘数

时间:2013-02-24 23:50:52

标签: c++

我开始计算1到n之间的阶乘数。一个简单的解决方案就是使用因子表。

例如,在1到362,880之间有1!,2!,3! ...... 8!和9!然后该程序将输出在1之间有8个阶乘!和9!。

==

我还在研究一个单独的布尔函数,它确定数字X是否是阶乘。例如,如果X是5,040,它将返回True,但如果它是5,033则返回False。这必须使用计算,而不是列表。有人能指出我正确的方向吗?

...

这里绝对需要递归,对吧?

2 个答案:

答案 0 :(得分:0)

您可以对两者使用相同的算法:考虑伪代码

i = 1
calc = 1
while calc < X
   i = i + 1
   calc = calc * i

 // is X a factorial number ?
if calc == X
   true
else
   false

 //How many between 1 and X ?
  i - 1

答案 1 :(得分:0)

如果范围很大,可能使用Stirling's approximation来获得最接近的阶乘(数值求解n!=值)是个更好的主意。