階乗計算のシンプルな書き方

def factorial(x)
	return (1..x).inject(1) { |f, i| f * i }
end

inject とか初めて知りました.

あとこれも今日知ったのですが Ruby は末尾再帰の最適化がどうやら無いようなので,

def factorial(x)
	return (x > 1)? x * factorial(x - 1): 1
end

は律儀に再帰呼び出ししてスタック消費してくれるらしいですよ.