練習問題の定番だし、自前で書いても1行なので、大した話ではないのだが、
Ruby で階乗 の書き方について、
ほぼ同じなんだけど微妙に違う書き方がいろんなソースに分散するのも嫌だなと思い、
推奨の書き方もしくは標準ライブラリの機能に何かないものかと、
「ruby 標準ライブラリ 階乗」でググったら以下のスレッドを見つけた。
10 年位前のスレッドだが、 に出てこないので、現在も標準ライブラリでは提供されてないようだ。
上記のスレッドにいくつか解決策が提案してある。
代表的なのは
ネイティブ実装されてるので、Math.gamma が一番速いようだし、階乗そのものではないが、実質的に、階乗なので、どうやら Math.gamma が正解っぽい。
Ruby で階乗 の書き方について、
ほぼ同じなんだけど微妙に違う書き方がいろんなソースに分散するのも嫌だなと思い、
推奨の書き方もしくは標準ライブラリの機能に何かないものかと、
「ruby 標準ライブラリ 階乗」でググったら以下のスレッドを見つけた。
- stackoverflow / 2010-03-12: Ruby factorial function
10 年位前のスレッドだが、 に出てこないので、現在も標準ライブラリでは提供されてないようだ。
上記のスレッドにいくつか解決策が提案してある。
代表的なのは
- (1..n).inject(:*)
- class Integer;def !;(1..self).inject(:*);end;end; で整数型を拡張しといて !n または n.!
- Math.gamma でガンマ関数 が使えるので、n! は Math.gamma n+1 と同義
ネイティブ実装されてるので、Math.gamma が一番速いようだし、階乗そのものではないが、実質的に、階乗なので、どうやら Math.gamma が正解っぽい。
タグ
コメントをかく