2009-02-08 38 views
5

Tuve un examen hace un par de días y hoy el Instructor nos dio la respuesta clave del examen.¿Cómo se calcula el número de operaciones que ocurren durante la ejecución de un ciclo for?

Una de las preguntas era

for (j = 9; j >= 1; j--) 

contar el número de operaciones

El resultado fue 20.

¿Puede alguien explicar cómo se pone 20 operaciones de eso?

+0

Buenas respuestas pero no mucho esfuerzo de Maya. Este no es un foro de tareas. – duffymo

+0

No, no lo es, pero soy un ayudante compulsivo ;-). –

+0

@ spoon16: Esa fue una edición más inútil, en mi humilde opinión. Hace que el título sea difícil de leer en este sitio, difícil de buscar y, en general, solo un título malo. La pregunta se repite en su totalidad dentro del cuerpo del texto. No es necesario exprimirlo en el título corto (!!!). –

Respuesta

14

20 operaciones:

set j = 9 
check if j(9) >= 1 
set j to 8 
check if j(8) >= 1 
set j to 7 
check if j(7) >= 1 
set j to 6 
check if j(6) >= 1 
set j to 5 
check if j(5) >= 1 
set j to 4 
check if j(4) >= 1 
set j to 3 
check if j(3) >= 1 
set j to 2 
check if j(2) >= 1 
set j to 1 
check if j(1)>=1 
set j to 0 
check if j(0)>=1 

para (j = n; j> = 0; j--)

Ok, se empieza con dos operaciones:

  • (j = n)
  • check (j> = 0).

Para todos n < 0 se detiene allí.

Si n = 0, se obtiene un adicional:

  • j--
  • cheque (j> = 0).

Para n = 1, obtiene otro conjunto de esos.

Entonces el número de operaciones es 2 para n < 0 y 2n + 4 para n> = 0.

Estas cosas no son tan difíciles. Solo necesita pensar como una computadora y anotar cuidadosamente cualquier cambio en el estado (conjunto de variables).

+0

En realidad, esta es una gran explicación. :) – BobbyShaftoe

+0

esto es muy bueno Un montón de gracias puede explaine en la misma esta para (j = n; j> = 0; j--) para (j = 1; j <10; j ++) –

+0

Hey Maya , ahora que te han enseñado a pescar, tal vez es hora de probar suerte. Sigue la metodología y mira lo que obtienes. – duffymo

3

Bueno, en la primera iteración, j se establece en 9. Después de eso, cada iteración básicamente ejecuta las mismas dos instrucciones:

  • primero, prueba si j >= 1, y
  • segundos, decrementar j (j--).

Esto se hace nueve veces (desde 9 inclusive hasta 0 inclusive). En la última iteración, probamos nuevamente si j >= 1 y como esto es falso, salimos del ciclo. Por lo tanto, obtenemos 1 + 9 * 2 + 1 = 20 iteraciones.

0

¿Qué valor anotó? Sólo curioso.

Vamos a contar juntos, maya:

for (j = 9; j >= 1; j--) 

uno para la asignación de 9 a j = 1; una comparación del valor actual de j a 1 para cada iteración del bucle = 10; un decremento de j para cada iteración del ciclo excepto el último = 9;

1 + 10 + 9 = 20 en mi libro.

0

Tiene 1 misión (j = 9). La operación "j--" se ejecutará 9 veces; la comprobación condicional "j> = 1" se ejecutará 10 veces (cada iteración que haga la pregunta "es j> = 1"), la última fallará. Entonces tiene 1 + 9 + 10 = 20.

Su instructor es muy, muy malo si es tan malo como para no ofrecer ayuda. Esta es una de esas preguntas que obtienes o no. El instructor debería ayudar. :)

+0

Me gustaría tener más contexto antes de decidir que el instructor era "malo" o "malo". – duffymo

+0

Bueno, no es un juicio absoluto. Si usas la lógica, utilicé un "condicional" que es decir "SI debe ser tan malo como para no ofrecer ayuda, ENTONCES es muy, muy malo". Solo lógica básica 101. :) Veo profs como este mucho, es exasperante. Sin embargo, si el OP es incorrecto, entonces no hay daño, no hay falta. :) – BobbyShaftoe

Cuestiones relacionadas