-3

1からnまでの階乗の数の計算を開始するのに少し行き詰まっています。簡単な解決策は、階乗テーブルを使用することです。

たとえば、1から362,880の間には、1!、2!、3!があります。... 8!と9!。プログラムは、1の間に8つの階乗があることを出力します!と9!。

==

また、数値Xが階乗であるかどうかを判別する別のブール関数にも取り組んでいます。たとえば、Xが5,040の場合はTrueを返しますが、5,033の場合はFalseを返します。これは、リストではなく計算を使用する必要があります。誰かが私を正しい方向に向けることができますか?

..。

ここでは間違いなく再帰が必要ですよね?

4

2 に答える 2

0

範囲が大きい場合は、スターリングの近似を使用して最も近い階乗 (n! = 値を数値的に解く) を使用することをお勧めします。

于 2013-02-25T01:38:37.347 に答える
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
于 2013-02-24T23:57:42.240 に答える