階乗を求める

100の階乗を求める

puts (1..100).to_a.inject{|a,b|a*b}
puts 1.upto(100).inject{|a,b|a*b}
puts (1..100).map{|i|i}.inject{|a,b|a*b}
arr = (1..100).to_a
func = lambda{|i,arr| return i if arr.empty?; i*func.call(arr.shift, arr)}
puts func.call(arr.shift, arr)
arr = (1..100).to_a
res = arr.first
arr[1..-1].each{|i|res*=i}
puts res
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
  • 1..nで、1からnまでの数値のリストが手に入る
    • ちなみに1...nで、1から(n-1)までのリストが手に入る
  • リストをto_aするとArrayになる
  • Array#injectで先頭要素から順に計算していける

Rubyのinjectたまに便利