2009-02-08 8 views
5

Ho fatto un esame un paio di giorni fa e oggi l'istruttore ci ha dato la risposta chiave dell'esame.Come calcolare il numero di operazioni che si verificano durante l'esecuzione di un ciclo for?

Una delle domande era

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

contare il numero di operazioni

Il risultato è stato 20.

Qualcuno può spiegare come egli ottiene 20 operazioni da questo?

+0

Belle risposte ma non molto sforzo da parte di Maya. Questo non è un forum per i compiti a casa. – duffymo

+0

No, non lo è, ma sono un aiutante compulsivo ;-). –

+0

@ spoon16: questa è stata una modifica molto utile, IMHO. Rende il titolo difficile da leggere su questo sito, difficile da cercare, e generalmente solo un brutto titolo. La domanda è ripetuta per intero all'interno del corpo del testo. Non c'è bisogno di spremerlo nel breve (!!!) titolo. –

risposta

14

20 operazioni:

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 

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

Ok, si inizia con due operazioni:

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

Per tutti n < 0 si ferma lì.

Se n = 0, si ottiene un adizionale:

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

Per n = 1, si ottiene un altro set di quelli.

Quindi il numero di operazioni è 2 per n < 0 e 2n + 4 per n> = 0.

Queste cose non sono così difficili. Hai solo bisogno di pensare come un computer e prendere nota di ogni cambiamento dello stato (set di variabili).

+0

In realtà, questa è una spiegazione. :) – BobbyShaftoe

+0

questo è grande Grazie mille si può explaine nello stesso questo for (j = n; j> = 0; j--) for (j = 1; j <10; j ++) –

+0

Hey Maya , ora che ti è stato insegnato a pescare, forse è il momento di provarci. Segui la metodologia e guarda cosa ottieni. – duffymo

3

Bene, nella prima iterazione, j è impostato su 9. Dopo di che, ogni iterazione esegue sostanzialmente le stesse due istruzioni:

  • primi, verificare se j >= 1 e
  • secondo, diminuire j (j--).

Questo viene fatto nove volte (da 9 globalmente a 0 inclusiva). Nell'ultima iterazione, testiamo di nuovo se j >= 1 e poiché questo è falso, usciamo dal ciclo. Pertanto otteniamo 1 + 9 * 2 + 1 = 20 iterazioni.

0

Che valore hai annotato? Solo curioso.

Contiamo insieme, maya:

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

uno per l'assegnazione di 9 a j = 1; un confronto del valore corrente di j a 1 per ogni iterazione del ciclo = 10; un decremento di j per ogni iterazione del ciclo tranne l'ultimo = 9;

1 + 10 + 9 = 20 nel mio libro.

0

Si dispone di 1 assegnazione (j = 9). L'operazione "j--" verrà eseguita 9 volte; il controllo condizionale "j> = 1" verrà eseguito 10 volte (ogni iterazione si pone la domanda "è j> = 1"), l'ultimo avrà esito negativo. Quindi hai 1 + 9 + 10 = 20.

Il tuo istruttore è molto, molto cattivo se è così cattivo da non offrirsi di aiutare. Questa è una di quelle domande che ottieni o no. L'istruttore dovrebbe aiutare. :)

+0

Vorrei più contesto prima di decidere che l'istruttore era "cattivo" o "cattivo". – duffymo

+0

Beh, non è un giudizio assoluto. Se usi la logica, ho usato un "condizionale" che è dire "SE deve essere così cattivo da non offrire aiuto ALLORA è molto, molto cattivo". Semplicemente logica di base 101. :) Vedo i professionisti come questo molto, è esasperante. Tuttavia, se l'OP è sbagliato, nessun danno, nessun fallo. :) – BobbyShaftoe

Problemi correlati