Я был бы рад написать для вас код, но, похоже, вы ищете интуицию в этой проблеме. Так что, возможно, это больше похоже на момент "научить человека ловить рыбу".
Итак, позвольте мне задать вам несколько вопросов:
Давайте обобщим задачу на строки длины N. Как выглядит случай N = 1? Это
0
1
2
А как выглядит случай N = 2? Это
00
01
02
10
11
12
20
21
22
Интересно, видите ли вы, как, учитывая случай N = 1, мы можем легко вывести (то есть сформировать) случай N = 2 очень механическим способом. Теперь, если вы видите шаблон для этого конкретного случая, можете ли вы сказать, что шаблон для общего случая? Т.е. если у вас уже был в руках ответ для строк длины N, и я попросил вас предоставить мне ответ для строк длины N + 1, не могли бы вы сделать это? Если это так, у вас есть само определение рекурсивного алгоритма.
PS Думаю, я бы назвал эти комбинации, а не перестановки.