>.916
> ただ、再帰よりも書くのが手間かも。

何がどう手間なのか知らんが

1)の長さyの数字Lを用意って単にint L[y]で済むし、
2)のx進数と考えて1ずつ足していくのは
n=0; while (++L[n]==x) { L[n]=0; ++n; }
とでも書けばいいだけだし3)は++nの直後にifをひとつ入れるだけだろ。
4)はループまわしてifで判定するだけ。
5)はループまわしてvectorに出力するだけ。

普通に書いても10行にも満たないと思うんだが?

あんた、ほんとにプログラム書けんのか?
アルゴリズムの勉強なんかより、Ozy氏の『Short Coding』でも読んで
洗練されたプログラムの書き方の勉強するのが先なんじゃね?