Wersja rekurencyjna w Javie:
private void check2(String input, Set<String> results, char prev, int repetitions, int i) {
if (repetitions > MAX_REPETITIONS)
results.add("to_many_same_chars_in_a_row");
else if (i < input.length())
check2(input, results, input.charAt(i), input.charAt(i) == prev ? repetitions + 1 : 0, i + 1);
}
public void check1(String input, Set<String> results) {
check2(input, results, input.charAt(0), 0, 1);
}
W Scali byłoby mniej więcej coś takiego:
def check(input: String, results: Set[String]) {
def check_(prev: Char, repetitions: Int, i: Int) {
if (repetitions > MAX)
results.add("max reached")
else if (i < input.length)
check_(input.charAt(i), if (input.charAt(i) == prev) repetitions + 1 else 0, i + 1)
}
check_(input.charAt(0), 0, 1)
}
Brak return, continue, break, for, while i goto w obu wersjach.