市川といいます。

再帰じゃないですがこんなのは。

class Integer
  def tod(x = 10)
    return [ 0 ] if self == 0
    i = self.dup
    c = []
    while i > 0
      c << (i % x)
      i /= x
    end
    c.reverse
  end
end

0.upto(4**4 - 1) do |i|
  p (([0,0,0] + i.tod(4))[-4,4])
end

ABCDじゃなくて0123になっちゃってますケドも。

-----
市川 裕隆     hirotaka.ichikawa / tosmec.toshiba.co.jp
東芝マイクロエレクトロニクス CAD技術開発担当