階乗を求める
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たまに便利