Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
public class Main {
static int f(int n) {
return n == 0 ? 0 : n + f(n - 1);
}
public static void main(String[] args) {
System.out.println(f(4));
}
}10
- Ждать
0: 0 из базового случая возвращается вf(1), а не вmain; каждый ждущий вызов прибавляет своюn, и ответы растут: 1, 3, 6, 10. - Ждать
StackOverflowError:nдоходит до 0, и там?:возвращает 0 без нового вызова, поэтому цепочка останавливается после пяти вызовов.
- Что произойдёт, если программа вызовет
f(-1)? - Как посчитать ту же сумму циклом?