私は171の階乗を取得しようとするたびに、INFを取得します。 170はうまく動作します。スクリプトで171 +の階乗を得ることは可能ですか?どうやって? My機能:Factorial of 170+
本当にfunction factorial($n) {
if ($n == 0) return 1;
return $n * factorial($n - 1);
}
私は171の階乗を取得しようとするたびに、INFを取得します。 170はうまく動作します。スクリプトで171 +の階乗を得ることは可能ですか?どうやって? My機能:Factorial of 170+
本当にfunction factorial($n) {
if ($n == 0) return 1;
return $n * factorial($n - 1);
}
echo "1241018070217667823424840524103103992616605577501693185388951803611996075221691752992751978120487585576464959501670387052809889858690710767331242032218484364310473577889968548278290754541561964852153468318044293239598173696899657235903947616152278558180061176365108428800000000000000000000000000000000000000000"
は、しかし、あなたの関数で結構です。私はPHPにはそのような精度がないと思う。私はpythonで値(正しいbtw)を持っています
非常に大きな数値を扱う場合は、それを可能にする拡張子を使用する必要があります。
BCMath(http://www.php.net/manual/en/book.bc.php)とGMP(http://www.php.net/manual/en/book.gmp.php)があります。
GNU MP拡張では、大きな階乗を計算するための 'gmp_fact()'関数も提供していますボックスの。 –
32ビットマシン(~10^308
)で倍精度浮動小数点数の最大値を超える可能性があります。 170!階乗は~7.25741562 × 10^307
ですが、その直下ですが、171!より大きい。あなたの最良の賭けは、EboMikeのライブラリかCrozinの答えの中の1つを使うことです。
大きなnの場合、n!非常に迅速にスターリングの近似を使用してほとんどエラーが発生しません。この投稿を見てください。それは、関数の分析といくつかのサンプルコードがあります
http://threebrothers.org/brendan/blog/stirlings-approximation-formula-clojure/
私は171階乗を必要としない、私は:) – Tom
は、端末を開くことを数えることができるスクリプトを、必要とします。 'python'とタイプして 'import math'と入力してください。 'math.factorial(171)'と入力してください。 @Crozinや@EboMikeのような拡張子を使わずにPHPで行うことはできません –
Googleでは171をやめ、170で終了します。 – DampeS8N