Facciamo un famoso esercizio, e questo potrebbe venire fuori come una domanda per un'intervista.
Cercheremo di implementare i numeri di Fibonacci e i numeri di Fibonacci sono così.
Il primo numero è zero, poi il secondo numero è uno, iniziano sempre con zero uno, poi succede
questo.
Aggiungiamo zero con uno per eguagliare il numero successivo.
Aggiungiamo uno con uno per eguagliare il numero successivo, aggiungiamo uno per due per ottenere il prossimo numero due, tre per aggiungere
il prossimo numero cinque, otto per aggiungere il prossimo numero.
Così via.
Come puoi vedere, questo cresce in modo esponenziale.
Beh, cresce davvero in alto, molto velocemente.
E questo tipo di numerazione si manifesta molto in natura, ma è anche un problema interessante
perché questi numeri, anche se all'inizio, crescono molto, molto lentamente.
Diventano sempre più grandi e più grandi, e diventa un problema che può davvero intasare le risorse.
Quindi questo è quello che volevo fare.
Creeremo una funzione.
FIB che prende un numero.
E qui, questo numero sarà il numero indice di Fibonacci.
Quindi, per esempio, se fosse il ventesimo numero, dovrebbe avere questo.
Quindi, se volessi, diciamo fib 20 qui.
In tal caso, voglio che mi restituiate tutti questi numeri.
Usando i generatori, in modo che sia uno per uno fino a quando non arriviamo in questa posizione.
Ora, ci sono due modi per farlo che puoi fare con l'elenco o possiamo farlo con un generatore.
E noterai che con un generatore è molto più facile da fare che con un elenco perché
alla fine con un elenco finirai le risorse.
Quindi quello che voglio che tu faccia è riportare qui i numeri che vedi qui fino al 20.
E se vuoi, puoi continuare ad aumentare quel numero e vedere cosa succede.
E come bonus, puoi provare a implementarlo anche con un elenco.
Quindi viene visualizzato anche in un elenco gigante.
Metti in pausa il video se vuoi qui.
Altrimenti, continuerò con la risposta.
Innanzitutto, quello che vogliamo fare è dire che A sarà uguale a zero e B è uguale a uno, quindi A e
B saranno l'inizio dei numeri.
Ora, qui dentro, useremo il generatore di distanza.
A Lupe.
Questo numero di volte in cui forniremo la funzione.
Ora, qui dentro, per prima cosa, voglio essere ora o due ora chiamo qualunque cosa fosse B, che è uno e
B qualunque sia il prossimo numero.
Ricordi il rotolo con Fibonacci?
Aggiungiamo i primi due numeri per ottenere il terzo numero.
Quindi abbiamo A B per ottenere il numero successivo, poi A, B per ottenere il numero successivo e poi una B per ottenere il numero successivo.
Quindi la prima cosa che voglio fare è effettivamente arrendersi e dire, ehi, dammi quello che vuoi e poi mettere in pausa la funzione
fino alla parte successiva.
Dopodiché, dopo che il ciclo for è passato alla parte successiva, dirò che voglio A due uguali B.
E voglio che B sia uguale ad A più B.
Vediamo se ha senso, sto dicendo, ehi, restituisci o restituisci a da questa lista così sarà zero
all'inizio, poi voglio che tu faccia un uguale a uno ora perché ci stiamo spostando e poi io voglio che B sia
uguale a uno perché A si è trasformato in uno e poi in quello precedente.
Quindi B diventa due.
Se guardiamo qui, ecco perché vogliamo avere A e B qui e poi vogliamo spostarne uno solo in questo
modo.
Quindi B dovrebbe essere ancora uno.
Quindi, mentre potremmo voler fare qui è in realtà non modificare a.
Fino a quando non saremo in grado di fare A più B.
Quindi come possiamo farlo?
Bene, possiamo semplicemente dire.
Diciamo che una variabile temporanea e questa temperatura si manterrà su qualunque fosse a quando arriviamo qui, che è
zero, e poi modificheremo A in uguale a uno e poi B sarà invece di A più,
B sarà la temperatura, che è zero.
Inoltre, qualunque cosa B fosse originariamente, che è una cosa che so che può creare confusione, potresti voler mettere in pausa qui o
forse stampare e vedere esattamente cosa sta succedendo, ma si spera che la nostra funzione funzioni ora.
Se ora faccio qualcosa come quattro X in forma e gli do, diciamo cento.
E stampiamo semplicemente la risposta.
Quindi stampa.
X e lo eseguo.
Va bene, guarda, ottengo tutti i miei numeri di Fibonacci, facciamo 20, come abbiamo visto nell'esempio, se clicco
su Esegui.
Prendo quattro uno otto uno.
Quindi ho 19 anni perché ricorda, il nostro conteggio inizia da zero, quindi tecnicamente qui, se vogliamo, possiamo fare 21 qui,
fare clic, correre e dovremmo ottenere sei, sette, sei, cinque, che è quello che otteniamo qui.
Molto, molto bello, ma puoi vedere come il numero aumenta notevolmente.
Siamo aumentati a mille ora, se dovessimo farlo in un elenco, sarebbe simile a questo.
Copiamo qui.
Ora, adattarsi a un elenco significherebbe che dobbiamo aggiungere un elenco qui.
E invece di cedere, il risultato verrà aggiunto con un punto.
E aggiungeremo qualunque sia il valore a, che è il valore iniziale.
E poi faremo la stessa cosa che abbiamo fatto prima, quindi invece di ILT, ora stiamo
solo aggiungendo a questo elenco e alla fine torniamo.
Il risultato dell'elenco ora, se restituisco questo, diciamo, fib a e gli do cento e faccio clic su Esegui,
commento quello originale con il generatore.
Beh, forse dovremmo stamparlo, no?
Quindi andiamo a stampare.
E fai clic su Esegui.
Va bene, è una lista enorme.
Ora, se dovessimo farne mille qui.
Vedi che ci vuole un bel po' di tempo.
E se facciamo 10000?
Va bene, ci vuole sicuramente un po' di tempo, e qui puoi vedere quanto stia funzionando duramente.
Sai cosa?
Lo smetterò.
E torniamo al nostro generatore.
Via e facciamo diecimila qui, vediamo come appare diecimila con un generatore.
Beh, sta ancora lavorando sodo, ma non tengo niente di tutto questo in memoria.
Lo stiamo prendendo uno per uno e posso agire su di esso nel nostro caso, semplicemente stampandolo uno per uno.
Ora, questa è una domanda da intervista comune, in realtà è un po' inutilmente confusa, credo.
Ma dimostra la potenza dei generatori.
Potrebbe essere necessario guardare questo video un paio di volte, ma si spera che a questo punto ti senti un po'
a tuo agio con l'utilizzo delle gamme e con come possiamo migliorare le prestazioni utilizzando i generatori.
Ci vediamo alla prossima.
Ciao ciao.