パーミュテーション(順列)

1.3
パーミュテーション(順列)を書いてみます。再帰で。
ちなみにパーミュテーションってなんじゃらほいから始まってるあたりがすでにだめだめ。数学的なお題は言葉や概念をそもそも知らなかったり、忘れたりしてるのでしんどい><
http://ja.wikipedia.org/wiki/%E9%A0%86%E5%88%97

#階乗を用意
def fact(n,r=n)
  if n==1
    r
  else
    fact(n-1,r*(n-1))
  end
end

#順列
def permutation(n,m)
  fact(n)/fact(n-m)
end
puts permutation(4,2) #=>12

そのものずばり、permutationというメソッドがあった。

#再帰使わない版
def permutation(n,m)
  (1..n).to_a.permutation(m).to_a.size
end
puts permutation(4,2) #=>12