Microsoft PowerPoint - Java-rekurzija.ppt

Podobni dokumenti
Diapozitiv 1

Vaje: Matrike 1. Ugani rezultat, nato pa dokaži z indukcijo: (a) (b) [ ] n 1 1 ; n N 0 1 n ; n N Pokaži, da je množica x 0 y 0 x

Microsoft PowerPoint - Java_spremenljivke

Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se

C:/Users/Matevž Èrepnjak/Dropbox/FKKT/testi in izpiti/ /IZPITI/FKKT-februar-14.dvi

NAVODILA AVTORJEM PRISPEVKOV

Microsoft Word - M docx

PRIPRAVA NA 1. Š. N.: KVADRATNA FUNKCIJA IN KVADRATNA ENAČBA 1. Izračunaj presečišča parabole y=5 x x 8 s koordinatnima osema. R: 2 0, 8, 4,0,,0

C:/Users/Matevž Èrepnjak/Dropbox/FKKT/TESTI-IZPITI-REZULTATI/ /Izpiti/FKKT-avgust-17.dvi

Microsoft Word - M _mod..docx

Strojna oprema

Microsoft PowerPoint - Objekti_gradnja.ppt

Vektorji - naloge za test Naloga 1 Ali so točke A(1, 2, 3), B(0, 3, 7), C(3, 5, 11) b) A(0, 3, 5), B(1, 2, 2), C(3, 0, 4) kolinearne? Naloga 2 Ali toč

FGG14

Univerza v Mariboru Fakulteta za naravoslovje in matematiko Oddelek za matematiko in računalništvo Enopredmetna matematika IZPIT IZ VERJETNOSTI IN STA

2. izbirni test za MMO 2017 Ljubljana, 17. februar Naj bosta k 1 in k 2 dve krožnici s središčema O 1 in O 2, ki se sekata v dveh točkah, ter

Microsoft Word - UP_Lekcija04_2014.docx

NAJRAJE SE DRUŽIM S SVIČNIKOM, SAJ LAHKO VADIM ČRTE IN KRIVULJE, PA VELIKE TISKANE ČRKE IN ŠTEVILKE DO 20. Preizkusite znanje vaših otrok in natisnite

Osnove matematicne analize 2018/19

3. Metode, ki temeljijo na minimalnem ostanku Denimo, da smo z Arnoldijevim algoritmom zgenerirali ON bazo podprostora Krilova K k (A, r 0 ) in velja

C:/Users/Matevž Èrepnjak/Dropbox/FKKT/TESTI-IZPITI-REZULTATI/ /Izpiti/FKKT-junij-17.dvi

Datum in kraj

FGG13

Mladi za napredek Maribora srečanje DOLŽINA»SPIRALE«Matematika Raziskovalna naloga Februar 2015

Strokovni izobraževalni center Ljubljana, Srednja poklicna in strokovna šola Bežigrad PRIPRAVE NA PISNI DEL IZPITA IZ MATEMATIKE 2. letnik nižjega pok

ANALITIČNA GEOMETRIJA V RAVNINI

Vrste

Matematika Diferencialne enačbe prvega reda (1) Reši diferencialne enačbe z ločljivimi spremenljivkami: (a) y = 2xy, (b) y tg x = y, (c) y = 2x(1 + y

rm.dvi

Matematika II (UN) 2. kolokvij (7. junij 2013) RE ITVE Naloga 1 (25 to k) ƒasovna funkcija f je denirana za t [0, 2] in podana s spodnjim grafom. f t

5 SIMPLICIALNI KOMPLEKSI Definicija 5.1 Vektorji r 0,..., r k v R n so afino neodvisni, če so vektorji r 1 r 0, r 2 r 0,..., r k r 0 linearno neodvisn

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Verjetnost Pisni izpit 5. februar 2018 Navodila Pazljivo preberite

RAČUNALNIŠKA ORODJA V MATEMATIKI

Rešene naloge iz Linearne Algebre

DN5(Kor).dvi

Slide 1

SESTAVA VSEBINE MATEMATIKE V 6

Matematika II (UNI) Izpit (23. avgust 2011) RE ITVE Naloga 1 (20 to k) Vektorja a = (0, 1, 1) in b = (1, 0, 1) oklepata trikotnik v prostoru. Izra una

CpE & ME 519

Poglavje 3 Reševanje nelinearnih enačb Na iskanje rešitve enačbe oblike f(x) = 0 (3.1) zelo pogosto naletimo pri reševanju tehničnih problemov. Pri te

Srednja šola za oblikovanje

UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA Poučevanje, Predmetno poučevanje Bogdan Urdih NEKONVENCIONALNI NAČINI POUČEVANJA REKURZIJE Magistrsko delo Me

Razred: 1

FAKULTETA ZA STROJNIŠTVO Matematika 2 Pisni izpit 9. junij 2005 Ime in priimek: Vpisna št: Zaporedna številka izpita: Navodila Pazljivo preberite bese

Slide 1

Domače vaje iz LINEARNE ALGEBRE Marjeta Kramar Fijavž Fakulteta za gradbeništvo in geodezijo Univerze v Ljubljani 2007/08 Kazalo 1 Vektorji 2 2 Analit

resitve.dvi

Delavnica Načrtovanje digitalnih vezij

1. izbirni test za MMO 2018 Ljubljana, 16. december Naj bo n naravno število. Na mizi imamo n 2 okraskov n različnih barv in ni nujno, da imam

Microsoft PowerPoint - Mocnik.pptx

glava.dvi

Poročilo o opravljenem delu pri praktičnem pouku fizike: MERJENJE S KLJUNASTIM MERILOM Ime in priimek: Mitja Kočevar Razred: 1. f Učitelj: Otmar Uranj

Slide 1

FGG02

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 6. julij 2018 Navodila Pazljivo preberite be

N

resitve.dvi

PORAJAJOČA SE PISMENOST

(Microsoft Word - U\350enje telegrafije po Kochovi metodi.doc)

7. tekmovanje v znanju astronomije 8. razred OŠ Državno tekmovanje, 9. januar 2016 REŠITVE NALOG IN TOČKOVNIK SKLOP A V sklopu A je pravilen odgovor o

11. Navadne diferencialne enačbe Začetni problem prvega reda Iščemo funkcijo y(x), ki zadošča diferencialni enačbi y = f(x, y) in začetnemu pogo

Funkcije in grafi

EKVITABILNE PARTICIJE IN TOEPLITZOVE MATRIKE Aleksandar Jurišić Politehnika Nova Gorica in IMFM Vipavska 13, p.p. 301, Nova Gorica Slovenija Štefko Mi

Zgledi:

Microsoft PowerPoint - IPPU-V2.ppt

P181C10111

Popravki nalog: Numerična analiza - podiplomski študij FGG : popravljena naloga : popravljena naloga 14 domače naloge - 2. skupina

Računalniški praktikum Projektna naloga - Izdelava spletne strani Avtor: Matej Tekavčič Skupina: Matej Tekavčič - koordinator Simon Vrhovnik Tine Kavč

Predtest iz za 1. kontrolno nalogo- 2K Teme za kontrolno nalogo: Podobni trikotniki. Izreki v pravokotnem trikotniku. Kotne funkcije poljubnega kota.

Bojan Kuzma ZBIRKA IZPITNIH VPRAŠANJ PRI PREDMETIH ANALIZA I IN ANALIZA II (Zbirka Izbrana poglavja iz matematike, št. 1) Urednica zbirke: Petruša Mih

RAČUNALNIŠKI PRAKTIKUM d o c. d r. A N D R E J T A R A N E N K O Kdo bo z vami? Predavatelj: dr. Andrej Taranenko

Microsoft PowerPoint _12_15-11_predavanje(1_00)-IR-pdf

(Microsoft PowerPoint - vorsic ET 9.2 OES matri\350ne metode 2011.ppt [Compatibility Mode])

IZVEDBENA UREDBA KOMISIJE (EU) 2018/ z dne 16. julija o spremembi Izvedbene uredbe (EU) 2017/ za razjasnitev in

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni

11. srednješolsko tekmovanje ACM v znanju računalništva Šolsko tekmovanje 22. januarja 2016 NASVETI ZA TEKMOVALCE Naloge na tem šolskem tekmovanju pok

KONTINGENČNI PRISTOP K OBLIKOVANJU SISTEMA STRATEŠKEGA POSLOVODNEGA RAČUNOVODSTVA: EMPIRIČNA PREVERBA V SLOVENSKIH PODJETJIH

Bilten 13. državnega srednješolskega tekmovanja ACM v znanju računalništva, 2018

Microsoft Word - Seštevamo stotice.doc

9razred.xls

VST: 1. kviz

P182C10111

Učinkovita izvedba algoritma Goldberg-Tarjan Teja Peklaj 26. februar Definicije Definicija 1 Naj bo (G, u, s, t) omrežje, f : E(G) R, za katero v

'Kombinatoricna optimizacija / Lokalna optimizacija'

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Andraž Drčar Prevajanje javanskih programov z vstavljeno zložno kodo DIPLOMSKO DELO UNI

Objektno usmerjeno programiranje

Microsoft Word - SL Common Communication 2 updated v1.1.doc

APS1

Poslovilno predavanje

resitve.dvi

1 Diskretni naklju ni vektorji 1 1 Diskretni naklju ni vektorji 1. Dopolni tabelo tako, da bosta X in Y neodvisni. X Y x x x x x

7. VAJA A. ENAČBA ZBIRALNE LEČE

Smc 8.indd

VAJE

Osnovna šola Sečovlje SEČOVLJE SEČOVLJE IZBOR POTREBŠČIN, KI JIH ZA ŠOLSKO LETO 2016/2017 PREDLAGA STROKOVNI AKTIV 1.a RAZRED naziv predmet ZV

Diapozitiv 1

TLAK PLOŠČINA 1. Zapiši oznako in enoto za ploščino. 2. Zapiši pretvornik pri ploščini in po velikosti zapiši enote od mm 2 do km Nariši skico z

C:/Users/Matevz/Dropbox/FKKT/TESTI-IZPITI-REZULTATI/ /Izpiti/FKKT-januar-februar-15.dvi

Robert Hooke

Transkripcija:

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č... 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č..." Slika v sliki 1

Rekurzija SSKJ: rekurz: knjiž. vrnitev (na kako stvar, dejstvo) Postopek, ki je definiran (določen, opisan) sam s sabo. Problemi 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. 2

Problemi Izračunaj y n s čim manj množenji. Hanoiski stolpiči REKURZIJA Različni problemi Naloga: Sestavi navodila (postopek), s katerim bi problem rešil Navkljub različnosti: Skupni prijem: rekurzija 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) 3

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 Faktoriela - postopek Faktoriela(n): Če je n = 0, je rezultat 1 sicer pa rezultat = n * faktoriela(n 1) Faktoriela 0! = 1 n! = n * (n-1)! public static long faktoriela(int n) { if (n == 0) return 1; else return n * faktoriela(n-1); Faktoriela.java Fak.java 4

Hanoiski stolpiči Problem Hanoiskih stolpičev: Hanoiski stolpiči Hanoiski stolpiči - prikaz 5

Hanoiski stolpiči -ideja prestavi n-1 obročev z A na B (s pomočjo C) Hanoiski stolpiči -ideja Daj obroč z A na C Prestavi n 1 obročev z B na C (s pomočjo A) 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? 6

Hanoiski stolpiči Preloži n obročev z A na C s pomočjo B Če jen = 1 potemdajobroč 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 Hanoiski stolpiči /* n obročev z A na C s pomočjo B */ Hanoi(n, A, B, C) Če jen = 1 potemdajobroč z A na C sicer pa Hanoi(n-1, A, C, B) Daj obroč z A na C Hanoi(n-1, B, A, C) 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); hanoi(n-1, st1, st3, st2); HanoiskiStolp.java System.out.println("Prelozi z " + st1 + " na " + st3); hanoi(n-1, st2, st1, st3); 7

y n n je potenca števila 2 (denimo 16) y 16 = y y y y y y y y y y y y y y y y... 15 množenj y 16 = y 8 y 8 y 8 = y 4 y 4 y 4 = y 2 y 2 y 2 = y y... 4 množenja y n Kaj pa, če n npr.14 y 14 = y 7 y 7 y 7 = y y 6 y 6 = y 3 y 3 y 3 = y y 2 y 2 = y y... 5 množenj y n if (n == 2) return y * y; pom = pot(y, n / 2); return pom*pom; če ni potenca 2 if (n == 1) return y; pom = pot(y, n / 2); if (n % 2 == 0){ return pom * pom; return y * pom * pom; 8

Kaj je torej rekurzija Kako je v slovarju definirana beseda 'rekurzivno'? Piše: Glej 'rekurzivno'. Fibbonacijevo zaporedje Fibonaccijeva števila so zaporedje števil 1 1 2 3 5 8 13 21 34 55... Kot vidimo, sta prvi dve števili v zaporedju enaki 1, vsako naslednje število pa dobimo tako, da seštejmo prejšnji dve. Fibbonaci1.java public class Fibonacci { public static int fib(int n){ if (n == 1) { return 1; return fib(n - 2) + fib(n - 1); 9

Fibbonaci1 > java Fibonacci 4 Exception in thread "main" java.lang.stackoverflowerror at Fibonacci.fib(Fibonacci.java:4) at Fibonacci.fib(Fibonacci.java:8) at Fibonacci.fib(Fibonacci.java:8) at Fibonacci.fib(Fibonacci.java:8)... Fibbonaci2 Rekurzija se ni ustavila Vstavimo println stavek public class Fibonacci { public static int fib(int n) { System.out.println("Izvajam fib(" + n + ")"); if (n == 1) { return 1; return fib(n - 2) + fib(n - 1); Fibbonaci2 > java Fibonacci2 4 Izvajam fib(4) Izvajam fib(0) Izvajam fib(-2) Izvajam fib(-4) Izvajam fib(-6) Izvajam fib(-8) Izvajam fib(-10) Izvajam fib(-12)... 10

Fibbonaci3 Pozabili na primer n = 2! public class Fibonacci { public static int fib(int n) { System.out.println("Izvajam fib(" + n + ")"); if (n == 1 n == 2) { return 1; return fib(n - 2) + fib(n - 1); Fibbonaci3 > java Fibonacci3 4 Izvajam fib(4) 3 > java Fibonacci3 8 Izvajam fib(8) Izvajam fib(6) Izvajam fib(4) Izvajam fib(5) Izvajam fib(4) Izvajam fib(7) Izvajam fib(5) Izvajam fib(4) Izvajam fib(6) Izvajam fib(4) Izvajam fib(5) Izvajam fib(4) 21 Končna oblika public class Fibonacci4 { public static int fib(int n) { if (n == 1 n == 2) { return 1; return fib(n - 2) + fib(n - 1); public static void main(string[] args) { int k = Integer.parseInt(args[0]); System.out.println(fib(k)); 11

Kochova črta Kochova črta Kochova črta stopnje 0: daljica od A do B. Kochova črta stopnje 1: daljico od A do B razdelimo na tretjine in srednjo tretjino nadomestimo z dvema v obliki trikotnika Kochova črta Kochova črta stopnje 1 je sestavljena iz štirih Kochovih črt stopnje 0 Kochova črta stopnje 2: isti postopek (srednjo tretjino nadomestiti z dvema enako dolgima daljicama) ponovimo na vseh črtah, ki sestavljajo Kochovo črto stopnje 1 12

Kochova črta stopnje n od A do B Daljico AB spremenimo po ustreznem postopku v 4 dele: od A do C, od C do D, od D do E in od E do B. A B D A C E B Kochova črta stopnje n od A do B Nariši 4 Kochove črte stopnje n 1 od A do C, od C do D, od D do E in od E do B D D A C E B A C E B Seveda to velja le, če ne rišemo Kochove črte stopnje 0 Ustavitveni pogoj? Stopnja črte = 0 Kochova črta stopnje 0: daljica od A do B Kochova črta stopnje n od A do B Kochova črta stopnje n od A do B: Če (n = 0) nariši daljico AB sicer izračunamo C, D, E nariši Kochovo črto st. n 1 od A do C nariši Kochovo črto st. n 1 od C do D nariši Kochovo črto st. n 1 od D do E nariši Kochovo črto st. n 1 od E do B 13

Koch public void koch(graphics g, int n, int ax, int ay, int bx, int by) { // narišemo Kochovo črto stopnje n od A do B if (n == 0) { // črta od A do B g.drawline(ax, ay, bx, by); Lomljenka.java Lomljenka1.java int cx = ax + (bx - ax)/3; int cy = ay + (by - ay)/3; int ex = ax + 2 * (bx - ax)/3; int ey = ay + 2 * (by - ay)/3; int dx = (int) ((ax + bx) / 2.0 + Math.sqrt(3)/6 * (ay - by)); int dy = (int) ((ay + by) / 2.0 + Math.sqrt(3)/6 * (bx - ax)); koch(g, n - 1, ax, ay, cx, cy); koch(g, n - 1, cx, cy, dx, dy); koch(g, n - 1, dx, dy, ex, ey); koch(g, n - 1, ex, ey, bx, by); // ==================== Koch ==================== 14