È necessario avviare una variabile da zero ( var i = 0
) di qualsiasi loop? Quando dovrei usare var i = 1;
e quando var i =0;
?
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.
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.
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.
Leggi altre domande sui tag javascript