Да, я знаю, что формулировку трудно понять, но это то, что меня беспокоит. В недавнем проекте у меня есть функция, которая повторяется, и есть ряд условий, которые заставили бы его перестать повторяться (на данный момент три). Какая из ситуаций будет необязательной? (Т.е. лучшая производительность или простота обслуживания).
1) Условный возврат:
void myRecursingFunction (int i, int j){
if (conditionThatWouldStopRecursing) return;
if (anotherConditionThatWouldStopRecursing) return;
if (thirdConditionThatWouldStopRecursing) return;
doSomeCodeHere();
myRecursingFunction(i + 1, j);
myRecursingFunction(i, j + 1);
}
2) Оберните все это в выражение if
void myRecursingFunction (int i, int j){
if (
!conditionThatWouldStopRecursing &&
!anotherConditionThatWouldStopRecursing &&
!thirdConditionThatWouldStopRecursing
){
doSomeCodeHere();
myRecursingFunction(i + 1, j);
myRecursingFunction(i, j + 1);
}
}
3) Вы делаете это неправильно, нуб, ни один здравомыслящий алгоритм никогда не будет использовать рекурсию.