1 / 31

Rekurzija

Rekurzija. Matija Lokar. Pesmica. Živel je mož, imel je psa, lepo ga je učil. Nekoč ukradel mu je kos mesa, zato ga je ubil. Postavil mu je spomenik in nanj napisal:. Živel je mož, imel je psa, lepo ga je učil. Nekoč ukradel mu je kos mesa, zato ga je ubil.

royal
Download Presentation

Rekurzija

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Rekurzija Matija Lokar

  2. Pesmica Živel je mož, imel je psa, lepo ga je učil. Nekoč ukradel mu je kos mesa, zato ga je ubil. Postavil mu je spomenik in nanj napisal: • Živel je mož, imel je psa, lepo ga je učil. • Nekoč ukradel mu je kos mesa, zato ga je ubil. • Postavil mu je spomenik in nanj napisal: • Živel je mož, imel je psa, lepo ga je učil. • Nekoč ukradel mu je kos mesa, zato ga je ubil. • Postavil mu je spomenik in nanj napisal: • Živel je mož, imel je psa, lepo ga je učil. • Nekoč ukradel mu je kos mesa, zato ga je ubil. • Postavil mu je spomenik in nanj napisal: • Živel je mož, imel je psa, lepo ga je učil. • Nekoč ukradel mu je kos mesa, zato ga je ubil. • Postavil mu je spomenik in nanj napisal: • Živel je mož, imel je psa, lepo ga je učil. • Nekoč ukradel mu je kos mesa, zato ga je ubil. • Postavil mu je spomenik in nanj napisal: • Živel je mož, imel je psa, lepo ga je učil. • Nekoč ...

  3. Zgodba Bila je temna, nevihtna noč ... Ladjo so valovi premetavali naprej in nazaj, veter je zavijal med jadri in dež se je zlival na palubo. Posadka je bila zbrana ob petrolejki. Vsi so se zavijali v odeje in trepetali, ko je kapitan pričel pripovedovati zgodbo: "Bila je temna, nevihtna noč ..."

  4. Slika v sliki

  5. Problemi

  6. Problemi Izračunaj volumen telesa, preluknjanega n-krat Poišči največje in najmanjše število v tabeli števil Uredi podatke po velikosti. Izračunaj produkt naravnih števil od 1 do n.

  7. Problemi Izračunaj yn s čim manj množenji. Hanoiski stolpiči

  8. REKURZIJA Različni problemi Naloga: Sestavi navodila (postopek), s katerim bi problem rešil Navkljub različnosti: Skupni prijem: rekurzija

  9. REKURZIJA V Slovarju slovenskega knjižnega jezika SSKJ ni besede rekurzija, pojavlja pa se beseda rekurz -a m (u) knjiž. vrnitev (na kako stvar, dejstvo): rekurz na že omenjana dognanja ni potreben / v njegovih romanih so pogosti rekurzi v preteklost (tudi v filmih je tega precej) rekurirati -am dov. in nedov. (i) knjiž. vrniti se (na kako stvar, dejstvo): pogosto rekurirati na nekatera dejstva, spoznanja

  10. REKURZIJA V Velikem slovarju tujk je dana definicija rekurzije (iz latinščine recurrere iti nazaj, vrniti se): definiranje funkcije ali postopka s samim seboj (informatika) izvajanje veličine ali funkcije, ki jo je treba šele definirati na že znano veličino (matematika). Označuje tudi zaporedje, katerega n-ti člen je določen z enim ali več predhodnimi členi.

  11. REKURZIJA Tudi v vsakdanjem življenju srečamo rekurzijo. Definicija prednika neke osebe je lahko: prednik osebe je eden od roditeljev osebe (osnovni primer) prednik pa je tudi tudi roditelj kateregakoli prednika (rekurzivni primer)

  12. REKURZIJA Rekurzivna slika (vir:WIkpideia), na kateri je rekurzivna slika, na kateri je rekurzivna slika, na kateri ...

  13. Rekurzija

  14. Rekurzija Po računalniško: Postopek, ki je definiran (določen, opisan) sam s sabo.

  15. Rekurzija Rešitev problema – podana s samim problemom, le nad manjšim obsegom podatkov V opisu postopka rešitve uporabimo kar ta postopek Če želimo priti do rešitve, ne moremo nadaljevati v nedogled kot npr. pri pesmici ustavitveni pogoj: Kdaj v postopku ne uporabimo istega postopka Običajno: ko je problem "majhen" (enostaven)

  16. Faktoriela 7! = 1 * 2* 3 * 4 * 5 * 6 * 7 3! = 6 Zelo hitro naraščajoča zadeva 3! = 6 5! = 120 42! = 1405006117752879898543142606244511569936384000000000 Rekurzivna definicija: n! = n * (n-1)! n! bomo izračunali, če bomo poznali (n-1)! 3! = 3 * 2! 2! = 2 * 1! = 1! = 1 * 0! = 0! = 0 * (-1)! = ??? 0! = 1

  17. Faktoriela - postopek Faktoriela(n): Če je n = 0, je rezultat 1 sicer pa rezultat = n * faktoriela(n – 1)

  18. Faktoriela 0! = 1 ali 1! = 1 n! = n * (n-1)! public static int faktoriela(int n) { if (n == 0) return 1; else return n * faktoriela(n-1); } System.out.println("4! = " + faktoriela(4)); Problem: faktoriela(16) Zakaj? Pri katerem n še gre? long / int

  19. N = 2 N * Fact(N-1) = ? Return ? N = 2 N * Fak(N-1) = ? Return 2 N = 1 N * Fact(N-1) = ? Return ? N = 1 N * Fak(N-1) = ? Return 1 N = 0 Return 1 Return ? N = 0 Return 1 N = 3 N* Fact(N-1) = ? Return ? N = 3 N* Fak(N-1) = ? Return 6

  20. yn n je potenca števila 2 (denimo 16) y16 = y y y y y y y y y y y y y y y y .... 15 množenj y16 = y8 y8 y8 = y4 y4 y4 = y2 y2 y2 = y y .................... 4 množenja

  21. yn Kaj pa, če n npr.14 y14 = y7 y7 y7 = y y6 y6 = y3 y3 y3 = y y2 y2 = y y ......... 5 množenj

  22. yn if (n == 2) return y * y;else { pom = pot(y, n / 2); return pom*pom; } če ni potenca 2 if (n == 1) return y;else { pom = pot(y, n / 2); if (n % 2 == 0){ return pom * pom; } else { return y * pom * pom; }}

  23. Kaj je torej rekurzija Kako je v slovarju definirana beseda 'rekurzivno' ? Piše: Glej 'rekurzivno'.

  24. Hanoiski stolpiči Problem Hanoiskih stolpičev:

  25. Hanoiski stolpiči

  26. Hanoiski stolpiči -ideja prestavi n-1 obročev z A na B (s pomočjo C)

  27. Hanoiski stolpiči -ideja Daj obroč z A na C Prestavi n –1 obročev z B na C (s pomočjo A)

  28. Hanoiski stolpiči Preloži n obročev z A na C s pomočjo B Preloži n-1 obročev z A na B s pomočjo C Daj obroč z A na C Preloži n-1 obročev z B na C s pomočjo A ustavi ?

  29. Hanoiski stolpiči Preloži n obročev z A na C s pomočjo B Če je n = 1 potem daj obroč z A na C sicer pa Preloži n-1 obročev z A na B s pomočjo C Daj obroč z A na C Preloži n-1 obročev z B na C s pomočjo A

  30. Hanoiski stolpiči /* n obročev z A na C s pomočjo B */ Hanoi(n, A, B, C) Če je n = 1 potem daj obroč z A na C sicer pa Hanoi(n-1, A, C, B) Daj obroč z A na C Hanoi(n-1, B, A, C)

  31. Hanoiski stolpiči public static void hanoi(int n, char st1, char st2,char st3){ if (n == 1) { System.out.println("Prelozi z " + st1 + " na " + st3); } else { hanoi(n-1, st1, st3, st2); System.out.println("Prelozi z " + st1 + " na " + st3); hanoi(n-1, st2, st1, st3); } }

More Related