Учитывая фрагмент кода, как вы будете определять сложности в целом. Я очень запутался в вопросах Big O . Например, очень простой вопрос:
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.println("*");
}
}
TA объяснил это чем-то вроде комбинаций. Например, n выберите 2 = (n (n-1)) / 2 = n ^ 2 + 0,5, затем удалите константу, чтобы он становится n ^ 2. Я могу поместить значения int test и попробовать, но откуда здесь взялась эта комбинация?
Что, если есть оператор if? Как определяется сложность?
for (int i = 0; i < n; i++) {
if (i % 2 ==0) {
for (int j = i; j < n; j++) { ... }
} else {
for (int j = 0; j < i; j++) { ... }
}
}
Тогда как насчет рекурсии ...
int fib(int a, int b, int n) {
if (n == 3) {
return a + b;
} else {
return fib(b, a+b, n-1);
}
}