Rekurzija Fakulteta za matematiko in fiziko http up

  • Slides: 31
Download presentation
Rekurzija Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je

Rekurzija Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport. Matija Lokar

Pesmica Živel je mož, imel je psa, lepo ga je učil. Nekoč ukradel mu

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č. . . Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Zgodba Bila je temna, nevihtna noč. . . Ladjo so valovi premetavali naprej in

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č. . . " Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Slika v sliki Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo

Slika v sliki Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Problemi Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je

Problemi Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Problemi • Izračunaj volumen telesa, preluknjanega n-krat • Poišči največje in najmanjše število v

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. Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Problemi • Izračunaj yn s čim manj množenji. • Hanoiski stolpiči Fakulteta za matematiko

Problemi • Izračunaj yn s čim manj množenji. • Hanoiski stolpiči Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

REKURZIJA • Različni problemi • Naloga: – Sestavi navodila (postopek), s katerim bi problem

REKURZIJA • Različni problemi • Naloga: – Sestavi navodila (postopek), s katerim bi problem rešil • Navkljub različnosti: – Skupni prijem: rekurzija Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

REKURZIJA • V Slovarju slovenskega knjižnega jezika SSKJ ni besede rekurzija, pojavlja pa se

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 Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

REKURZIJA • V Velikem slovarju tujk je dana definicija rekurzije (iz latinščine recurrere iti

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. Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

REKURZIJA • Tudi v vsakdanjem življenju srečamo rekurzijo. • Definicija prednika neke osebe je

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 roditelj kateregakoli prednika (rekurzivni primer) Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

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

REKURZIJA Rekurzivna slika (vir: WIkpideia), na kateri je rekurzivna slika, na kateri. . . Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Rekurzija Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je

Rekurzija Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

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

Rekurzija • Po računalniško: • Postopek, ki je definiran (določen, opisan) sam s sabo. Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Rekurzija • Rešitev problema – podana s samim problemom, le nad manjšim obsegom podatkov

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) Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Faktoriela • • • 7! = 1 * 2* 3 * 4 * 5

Faktoriela • • • 7! = 1 * 2* 3 * 4 * 5 * 6 * 7 3! = 6 Zelo hitro naraščajoča zadeva – – – • • • 3! = 6 5! = 120 42! = 140500611775287989854314260624451156993638400000 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 Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Faktoriela - postopek Faktoriela(n): Če je n = 0, je rezultat 1 sicer pa

Faktoriela - postopek Faktoriela(n): Če je n = 0, je rezultat 1 sicer pa rezultat = n * faktoriela(n – 1) Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Faktoriela • 0! = 1 ali 1! = 1 • n! = n *

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 Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

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

N=3 N* Fak(N-1) Fact(N-1)==? ? Return 6 ? N=2 Fact(N-1)==? ? N * Fak(N-1) ? Return 2 N=1 N * Fact(N-1) Fak(N-1) ==? ? Return ? 1 N=0 Return 1 ? Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

n y n je potenca števila 2 (denimo 16) y 16 = y y

n y n je potenca števila 2 (denimo 16) y 16 = y y y y. . 15 množenj y 16 = y 8 y 8 = y 4 y 4 = y 2 • y 2 = y y • . . 4 množenja • • • Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

n y • Kaj pa, če n npr. 14 • y 14 = y

n y • Kaj pa, če n npr. 14 • y 14 = y 7 • y 7 = y y 6 • y 6 = y 3 • y 3 = y y 2 • y 2 = y y. . 5 množenj Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

yn • • • if (n == 2) return y * y; else {

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; } } Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Kaj je torej rekurzija • Kako je v slovarju definirana beseda 'rekurzivno' ? •

Kaj je torej rekurzija • Kako je v slovarju definirana beseda 'rekurzivno' ? • Piše: Glej 'rekurzivno'. Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Hanoiski stolpiči • Problem Hanoiskih stolpičev: Fakulteta za matematiko in fiziko http: //up. fmf.

Hanoiski stolpiči • Problem Hanoiskih stolpičev: Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Hanoiski stolpiči Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta

Hanoiski stolpiči Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

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

Hanoiski stolpiči -ideja prestavi n-1 obročev z A na B (s pomočjo C) Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Hanoiski stolpiči -ideja Daj obroč z A na C Prestavi n – 1 obročev

Hanoiski stolpiči -ideja Daj obroč z A na C Prestavi n – 1 obročev z B na C (s pomočjo A) Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Hanoiski stolpiči • Preloži n obročev z A na C s pomočjo B –

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 ? Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Hanoiski stolpiči Preloži n obročev z A na C s pomočjo B Če je

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 Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Hanoiski stolpiči /* n obročev z A na C s pomočjo B */ Hanoi(n,

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) Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Hanoiski stolpiči public static void hanoi(int n, char st 1, char st 2, char

Hanoiski stolpiči public static void hanoi(int n, char st 1, char st 2, char st 3) { if (n == 1) { System. out. println("Prelozi z " + st 1 + " na " + st 3); } else { hanoi(n-1, st 3, st 2); System. out. println("Prelozi z " + st 1 + " na " + st 3); hanoi(n-1, st 2, st 1, st 3); } } Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.