Я пытаюсь сгенерировать все комбинации символов в строке. Таким образом, первый параметр - это заданная строка, а второй параметр - количество букв. Так что combinations("ab",2)
должно дать мне aa, ab, ba, bb
, а combinations("abc",2)
должно дать мне aa, ab, ac, ba, bb, bc, ca, cb, cc
и т. Д.
В первом случае мой текущий код дает мне aa, ab, bb
(поэтому он пропускает ba
).
Это мой код:
public static void combinations(String s, int n)
{
combinations(s,"",n);
}
public static void combinations(String s, String prfx, int n)
{
if(n == 0)
{
System.out.println(prfx);
}
else
{
for(int i = 0; i < s.length(); i++)
{
combinations(s.substring(i), prfx + s.charAt(i), n-1);
}
}
}
Что я делаю не так? Я был бы признателен, если бы вы не просто дали мне правильный ответ, но и дали мне некоторое объяснение, чтобы я мог извлечь из этого урок, потому что я не так хорош в рекурсии. Спасибо.