Programování v Pythonu
Přihlásit se
Programování v Pythonu (15/21) · 6:33

Příklad iterativní Fibonacciho posloupnosti Jeden z mnoha způsobů, jak napsat Fibonacciho posloupnost iterativně.

V posledním videu jsem vám dal za úkol napsat několik Fibonacciho funkcí. Ty počítají n-tý prvek Fibonacciho posloupnosti buď iteraticně, nebo rekurzivně. Udělám první pokus hned teď. V příštích pár videích vám ukážu že je několik způsobů, jak FB spočítat iterativně. Definujme naší funkci "fibonacci" s parametrem n N je něco, co předáme funkci přičemž víme, že z definice první 2 čísla posloupnosti jsou 0 a 1 Takže si pro sebe uděláme seznam toto je poprvé, kdy opravdu manipulujeme s listem. Nultý prvek je 0 první je 1 to je z definice. Potom sestavíme seznam pro všechny prvky do n-tého prvku včetně a vrátíme n-tý prvek seznamu. A důvod proč to děláme takhle je, že jsme schopní uspořit trochu paměti, což nám pomůže v počítání každého inkrementu Fibonacciho čísla. Použiji cyklus while. Mohli bychom použít i for, ale mě while přijde přirozenější před tím, než zadefinuji while, nastavím moje iterační proměné na nulu. A vy uvidíte, jak to funguje podruhé. Řeknu, že dokud i je menší nebo rovno n, i začíná na nule a jde k n. Upřímně neměl bych začínat na nule, protože víme, že nultý prvek je 0. a my chceme najít druhý, třetí atd. až n-tý. Takže začnu i = 2- Už máme nultý prvek v prvním, potom sestavíme druhý, protože i začíná na 2. až do n-tého prvku to je proč říkáme menší nebo rovno n, budeme přidávat prvky do sekvence Dokud je i menší nebo rovno než n, projdu seznam až do konce, což je vestavěná funkce pro jakýkoliv seznam v pythonu a teď se naučíte, jak to udělat. Moje IDE mi řekne, jak to použít. Můžu na konec jiný prvek a další prvek, který přidám na konec bude součet dvou předchozích prvků. Takže to budou prvky i - 1, takže předchozí prvek i - 1 se doslova týká předchozího prvku plus prvek i - 2. A to je vlastně veškerý základ, kterou je potřeba, na sestavení Fibonacciho posloupnosti a sestavení seznamu, když budeme inkrementovat i. I se rovná i + 1. Kdybychom nikdy nezvětšili i, byla by to nekonečná smyčka, ale takhle se zastaví na místě, kde i nebude menší nebo rovné n. A pak se smyčka ukončí. Když ukončíme smyčku, můžeme vrátit n-tý Fibonacciho prvek. Podíváme se, jestli to funguje, jestli to dává smysl. Jdu až k n-tému prvku. A vlastně n-tý prvek, ano tohle by mělo fungovat, protože kdyby tohle byl nultý Fibonacciho prvek, chci vrátit nulu, kdyby to byl první Fibonacciho prvek, chci vrátit tenhle prvek. Takže první ne nultý prvek, ale první Vypadá to, že by to mělo fungovat i před tím, než to spustíme, chci se ujistit, že rozumíte, co jsem se seznamem udělal. Ukážu vám malý příklad, tak tyhle seznamy fungují. Definuji si seznam, 1, 2. a když řeknu, že dělám něco divného, tak definuju my seznam 1 čárka 2 takže když napíšu a 1,2. Pokud připojím a, a.append Teď k tomu připojím 7 a když se podívám, tak mám 7 na konci. Když chci odkazovat na elementy, a[0] by měl být první. Druhý element, do závorek dám 2, by mi měl dát 7. a to je přesně to, co teď dělám říkám prvek i - 1, takže sem dáme nový prvek. po prvé jdeme skrz smyčku, kde přidáme nový prvek a to bude součet prvků i - 1, takže prví smyčka i je 2. i - 1 je 1, takže prvek 1 prvek 0 takže to bude prvek 1 + prvek 0 a pak se to bude dělat stejně až do n konec povídání, dál to vysvětlím v dalším videu s příkladem. Ale teď se podívejme, jestli to, co jsem napsal, funguje. Zkusme to spustit. Jdeme na to. Sledujme, jestli dostaneme správný výsledek začneme od začátku nultný prvek Fibonacci posloupnosti vypadá dobře zkusíme první. také vypadá dobře druhý prvek by měl být také 1 také vypadá dobře Třetí prvek by měl být 2, protože sčítáme 1 + 1 to funguje Zkusme desátý prvek. To vypadá docela dobře. Teď zkusíme nějaké velké číslo, třeba 100. to je velké číslo a já se nebudu pouštět do plovoucích věcí týkajících se velkých čísel, ale pojďmezkusit něco trošku menšího Například 20 Vypadá to, že to funguje a můžete si to zkusit sami zkontrolovat Takže tohle je pouze jedna z možných implementací, příště zkusím další Možná to uděláme for cyklem nebo rekursivně.
video