コンビネーション(組み合わせ)

1.4
コンビネーション(組み合わせ)
http://ja.wikipedia.org/wiki/%E7%B5%84%E5%90%88%E3%81%9B_%28%E6%95%B0%E5%AD%A6%29

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

def combination(n,m)
  if m == 0
    1
  elsif n == m
    1
  else
    fact(n)/(fact(m)*fact(n-m))
  end
end
puts combination(5,3) #=>10

combinationもあったぞなもし

#再帰使わない版
def combination(n,m)
  (1..n).to_a.combination(m).to_a.size
end
puts combination(5,3) #=>10