Intentando una respuesta a mi propia pregunta:
Creo que, aunque es lógicamente equivalente , los 2 fragmentos de código tienen diferentes complejidades de tiempo.
La razón es que cualquier ciclo while (condición) (digamos, de 10 líneas de código) puede reescribirse de la siguiente manera:
- ¿Por qué son importantes las esferas de Bloch para la computación cuántica?
- ¿Qué tan pronto podemos tener Quantum PC en nuestra oficina?
- ¿Es necesaria la computación cuántica para la IA o simplemente más potencia de procesamiento?
- ¿Cuál es la ecuación para la energía de una onda regular no cuántica?
- ¿Por qué la fuerza bruta puede resolver casi cualquier problema donde el tiempo no es una restricción? ¿Qué lo hace tan especial?
PASO 10: si (condición) VAYA AL PASO 11 más VAYA AL PASO 20
PASO 11: // haz algo
PASO 12: // haz algo
..
..
PASO 19: VAYA AL PASO 10;
PASO 20: // Ejecución adicional
Ahora, en los ejemplos dados, el primer fragmento de código es equivalente a:
PASO 10: si (verdadero) VAYA AL PASO 11 OTROS VAYA AL PASO 14
PASO 11: si (condición) VAYA AL PASO 12 OTRO retorno
PASO 12: // haz algo
PASO 13: VAYA AL PASO 10
PASO 14: // fuera del bucle, haz otra cosa
El segundo fragmento de código es equivalente a:
PASO 10: si (condición) VAYA AL PASO 11 OTROS VAYA AL PASO 13
PASO 11: // haz algo
PASO 12: VAYA AL PASO 10
PASO 13: regreso
Como se puede ver, el primer fragmento de código tiene dos condiciones if para tratar, mientras que el segundo fragmento solo tiene una condición if. Es por eso que el primer fragmento de código tiene una mayor complejidad temporal que el segundo.