• ベストアンサー

Rubyのプログラムについて

Rubyのプログラムについて、宜しければ教えてください。 def fct(n, f=1) if n<=1 then f else fct(n-1, n*f) end end def factorial(n) (1..n).inject{|x,y| x*y} end def factorial(n) eval( [*(1..n)].join("*") ) end このプログラムが、階乗を計算するメソッドになっているみたいなのですが、なぜコレだけで階乗が計算できるのでしょうか? 宜しければ教えてください><

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

知識ゼロを前提に説明するのは大変なので、質問です。 (1) Ruby言語の基本的な文法は知っていますか?   知らない場合、他に知っているプログラミング言語はありますか?   知っている場合、injectとjoinのリファレンスを読んでおいてください。 (2) 3つともわかりませんか? (3) 階乗の帰納的な定義は理解していますか?

takotako111
質問者

お礼

自己解決しました。 有難うございました。

takotako111
質問者

補足

(1)Rubyについては、ほぼ初心者です。言語はCとC++を良く使ってます (2)上は分かりますが下2つが良く分かりません (3) nから1まで掛けていくことですか?