Учитывая snipplet кода, как вы будете определять сложности в целом. Я очень сильно смущен вопросами 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 values и попробовать, но как эта комбинация входит?
Что делать, если инструкция ifres? Как определяется сложность?
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);
}
}