Creo que es O(n * m) pero también creo que es O(n)
Realmente no puedo decir cuál es el correcto ...
Teniendo en cuenta el primer bucle solo bucles 20 veces (cantidad fija), y el segundo anidado para bucle solo número de bucles / 20 y, por último, el tercer bucle anidado 3 veces.
¿Entonces sale como O(n * m / 20 * 3) que podemos llamar como O(n * m * k) ? ¿es esto correcto?
o es O(n) porque la complejidad del tiempo del segundo bucle solo lo afectará, ya que es diferente según lo que el usuario ingrese como número.
function loop(number) { let answer = 0; for (let i = 0; i < 20; i++) { for (let j = 0; j < number / 20; j++) { for (let k = 0; k < 3; k++) { answer++; } } } return answer; }El bucle exterior siempre se repite exactamente 20 veces, el bucle interior siempre se repite exactamente 3 veces. El único que tiene alguna variabilidad es el bucle medio, que repite el number / 20 veces. Por lo tanto, aumentará la answer 20 * 3 * (número / 20) veces, y dado que las constantes se ignoran para la notación Big O, esto resulta en O(number) .