При выполнении рекурсий для расчета перестановок или комбинаций строк требуется, чтобы на каждом уровне рекурсии создавались новые объекты, но раньше это приводит к переполнению стека, чтобы не пытаться смоделировать сценарии для массивов символов или построителя строк, но проблема возникает, когда на каждом уровне рекурсии возрастает сложность, поэтому управление массивом символов или построителем строк также становится слишком сложным.
Как разрешить такие ситуации, вот код, который я написал: -
private static int solve(int num) {
if (num == 1) {
return 6;
}
combination("", "");
return list.size();
}
private static int combination(String ch, String prev) {
if (!ch.isEmpty() && ch.split(" ").length == arrInput.length)
list.add(performSum(ch));
else {
for (int i = 0; i < creditScore.length; i++) {
prev = ch;
if (ch.isEmpty())
ch = "" + creditScore[i];
else
ch = ch + " " + creditScore[i];
combination(ch, prev);
ch = prev;
}
}
return list.size();
}
Сценарий может выглядеть так: предположим, что есть общие комбинации для общего счета студентов, где: -
credits allocated ranges from 1<= N <=5
Number of subjects from 1<= N <=100
Grade points from 5<=N<=10
Therefore as an example, a combination of score could be (1*6)+(2*10)+(4*7)....N subjects
Найти общее количество различных комбинаций очков.