È necessario avviare la variabile da zero (var i = 0) di 'for loop'? [duplicare]

2

È necessario avviare una variabile da zero ( var i = 0 ) di qualsiasi loop? Quando dovrei usare var i = 1; e quando var i =0; ?

    
posta mistichor 09.06.2014 - 07:41
fonte

3 risposte

9

Puoi iniziare un ciclo con qualsiasi cosa desideri. Il motivo per cui i loop iniziano a zero spesso, è dovuto al fatto che stanno eseguendo il looping di un array. Poiché il primo elemento di un array è all'indice "0", ha senso iniziare il ciclo da 0 per accedere a ogni elemento di un array.

    
risposta data 09.06.2014 - 07:53
fonte
2

Dovresti usare i = 0 in situazioni in cui l'iterazione a partire da zero sarebbe naturale, come precedentemente affermato potrebbe includere l'indicizzazione di array o simili. Personalmente direi che uso questo stile almeno il 90% delle volte, come quando modelliamo i problemi nel computer li modelliamo per usare strutture di dati incorporate, che di solito partono da 0. Le nostre menti diventano abituate a lavorare in questo stile.

Partire da i = 1 è più naturale per la modellazione di molti problemi durante la progettazione degli algoritmi. Ad esempio, se ti viene dato un problema come la persona 1 ha x anni, la persona 2 ha y anni, e così via, l'indicizzazione usando i numeri indicati può rendere più facile dare una risposta se viene chiesto qualcosa come chi è il la persona più giovane della lista. L'esperienza e la sperimentazione ti insegneranno se questo è utile, secondo la mia esperienza, questo può essere utile in cose come le competizioni di programmazione (come l'ICPC), dove gli algoritmi devono essere sviluppati rapidamente con poco tempo per il debug e gli algoritmi possono essere molto complesso, quindi la chiarezza è importante.

In altre parole può essere utile sprecare questo primo indice se aggiunge chiarezza, tuttavia i programmatori esperti imparano rapidamente a comprendere entrambi gli stili.

Tuttavia, se inizi a zero, ricorda di essere consapevole che gli array iniziano ancora a zero e avrai bisogno di un array di dimensioni n + 1 per rappresentare n elementi se usi l'indicizzazione a partire da 1.

Tieni presente anche le tue condizioni nel ciclo for.

for (int i = 0; i < 10; i ++) - Effettua il loop 10 volte

for (int i = 1; i < = 10; i ++) - Effettua il loop 10 volte

È fondamentale, ma una fonte comune di errori che potrebbe essere difficile da rintracciare, specialmente per i programmatori principianti.

    
risposta data 09.06.2014 - 08:02
fonte
0

L'indicizzazione di 1 sarà spesso più naturale e intuitiva quando pensi al primo elemento come elemento "1", quindi vorresti creare un array che sia one-based .

Nel corso del tempo scoprirai che la maggior parte delle strutture dati, i metodi e le routine di programmazione con cui lavori trattano gli array come zero-based .

Ho scoperto che col tempo il fatto che gli array basati su zero funzionassero per il mio modello mentale "1 uguale a 1" 1 based significava che facevo spesso cose come index + 1 o index-1 o comunque facevo scherzi per renderlo lavorare con un array basato su zero.

    
risposta data 09.06.2014 - 14:55
fonte

Leggi altre domande sui tag