Laten we een beroemde oefening doen, en dit kan opkomen als een interviewvraag.
We gaan proberen Fibonacci-getallen te implementeren en Fibonacci-getallen zijn als volgt.
Het eerste cijfer is nul, dan is het tweede cijfer één, ze beginnen altijd met nul één, dan is dit wat
er gebeurt.
We voegen nul toe aan één om gelijk te zijn aan het volgende getal.
We tellen één op bij één om gelijk te zijn aan het volgende getal, we tellen één voor twee op om het volgende nummer twee te krijgen, drie om het volgende
nummer vijf toe te voegen, acht om het volgende nummer toe te voegen.
enzovoort enzovoort.
Zoals je kunt zien, groeit dit exponentieel.
Nou, het groeit heel hoog, heel snel.
En dit soort nummering komt veel voor in de natuur, maar het is ook een interessant probleem
omdat deze nummers, hoewel in het begin, heel, heel langzaam groeien.
Ze worden groter en groter en groter, en het wordt een probleem dat de middelen echt kan opslokken.
Dit is dus wat ik wilde doen.
We gaan een functie maken.
FIB die een nummer nodig heeft.
En hierbinnen wordt dit nummer het indexnummer van de Fibonacci.
Dus als het bijvoorbeeld het 20e getal was, zou het dit moeten hebben.
Dus als ik wilde, laten we zeggen fib 20 hier.
In dat geval wil ik dat je al deze nummers teruggeeft.
Generatoren gebruiken, dus dat is één voor één totdat we bij deze locatie zijn.
Er zijn twee manieren om dit te doen, je kunt het doen met de lijst of we kunnen het doen met een generator.
En je zult merken dat het met een generator een stuk makkelijker is dan met een lijst, omdat
je uiteindelijk met een lijst zonder bronnen komt te zitten.
Dus wat ik wil dat je doet, is om hier de cijfers uit te voeren die je hier ziet, helemaal tot 20.
En als je wilt, kun je dat aantal blijven verhogen en kijken wat er gebeurt.
En als bonus kun je proberen dit ook met een lijst te implementeren.
Dus het wordt ook weergegeven in een gigantische lijst.
Pauzeer de video hier als je wilt.
Anders ga ik verder met het antwoord.
Wat we eerst willen doen, is zeggen dat A gelijk wordt aan nul en B gelijk is aan één, dus A en B
worden het begin van de getallen.
Nu, hier gaan we de bereikgenerator gebruiken.
Naar Lupe.
Dit aantal keren dat we de functie gaan leveren.
Nu, hier, eerst, wil ik nu of een twee zijn, nu noemen wat B was, wat één is en B om te
zijn wat het volgende nummer is.
Herinner je je de rol met Fibonacci nog?
We voegen de eerste twee getallen toe om het derde getal te krijgen.
Dus we hebben A B om het volgende nummer te krijgen, dan A, B om het volgende nummer te krijgen en dan een B om het volgende nummer te krijgen.
Dus het eerste dat ik wil doen, is toegeven en zeggen, hé, geef me gewoon wat als en pauzeer dan de functie
tot het volgende deel.
Daarna, nadat de for-lus naar het volgende deel gaat, ga ik zeggen dat ik A twee gelijke B wil.
En ik wil dat B gelijk is aan A plus B.
Laten we eens kijken of dat logisch is, ik zeg, hey, keer terug of geef een uit deze lijst,
zodat het eerst nul zal zijn, dan wil ik dat je nu gelijk maakt aan één, want we gaan over en dan ik wil
dat B gelijk is aan één omdat A in één is veranderd en vervolgens in de vorige.
Dus B wordt twee.
Als we hier kijken, willen we daarom dat we hier A en B hebben en dan willen we er zo eentje
overnemen.
Dus B zou nog steeds één moeten zijn.
Dus hoewel we hier misschien willen doen, is het eigenlijk niet wijzigen van a.
Totdat we A plus B kunnen doen.
Dus hoe kunnen we dit doen?
Nou, we kunnen het gewoon zeggen.
Laten we zeggen een tijdelijke variabele en deze temperatuur zal vasthouden aan wat a was toen we hier kwamen, wat nul is,
en dan gaan we A aanpassen om gelijk te zijn aan één en dan wordt B in plaats van A
plus, B zal temp zijn, wat nul is.
Plus, wat B oorspronkelijk ook was, waarvan ik weet dat dit verwarrend kan zijn, wil je misschien hier even pauzeren
of misschien afdrukken en precies zien wat er gebeurt, maar hopelijk werkt onze functie nu.
Als ik nu zoiets als vier X in fit doe en het geef, laten we zeggen honderd.
En laten we het antwoord gewoon uitprinten.
Dus printen.
X en ik voeren dit uit.
Oké, kijk daar eens naar, ik krijg al mijn Fibonacci-getallen, laten we 20 doen, zoals we in het voorbeeld zagen, als ik
op uitvoeren klik.
Ik krijg vier een acht een.
Dus ik ben 19, want onthoud, onze telling begint bij nul, dus technisch gezien hier, als we willen, kunnen we hier 21 doen,
klikken, rennen en we zouden zes, zeven, zes, vijf moeten krijgen, en dat is wat we hier krijgen.
Heel, heel cool, maar je kunt zien hoe het aantal dramatisch toeneemt.
Zijn we nu gestegen tot duizend, als we dit in een lijst zouden doen, zou het er ongeveer zo uitzien.
Laten we hier kopiëren.
Nu passen bij een lijst zou betekenen dat we hier een lijst moeten toevoegen.
En in plaats van toe te geven, zal het resultaat dot toevoegen.
En we gaan toevoegen wat de a-waarde ook is, wat de beginwaarde is.
En dan gaan we hetzelfde doen wat we eerder hebben gedaan, dus in plaats van ILT, voegen we nu gewoon
aan deze lijst toe en aan het einde komen we gewoon terug.
Het resultaat van de lijst nu, als ik dit teruggeef, laten we zeggen, fib naar en geef het honderd en ik klik op uitvoeren, laten we
commentaar geven op de originele met de generator.
We zouden dit waarschijnlijk moeten afdrukken, nietwaar?
Dus laten we gaan printen.
En klik op uitvoeren.
Oké, dat is een enorme lijst.
Nu, als we er hier duizend zouden doen.
Je ziet dat het nogal wat tijd kost.
Wat als we 10000 doen?
Oké, het kost zeker wat tijd, en je kunt hier zien hoe hard dit werkt.
Weet je wat?
Ik ga ermee stoppen.
En ga terug naar onze generator.
Veel en laten we hier tienduizend doen, laten we eens kijken hoe tienduizend eruit zien met een generator.
Nou, er wordt nog steeds hard aan gewerkt, maar ik bewaar dit niet in mijn geheugen.
We bekijken het één voor één en ik kan er in ons geval naar handelen, door het één voor één af te drukken.
Dit is een veel voorkomende vraag tijdens een sollicitatiegesprek, het is eigenlijk een beetje onnodig verwarrend, denk ik.
Maar het demonstreert wel de kracht van generatoren.
Je moet deze video misschien een paar keer bekijken, maar hopelijk voel je je nu een beetje op je gemak
met het gebruik van reeksen en hoe we de prestaties kunnen verbeteren met behulp van generatoren.
Ik zie je in de volgende.
Tot ziens.