errekurtsibitatea

25
Errekurtsibitatea Aitor G ´ omez-Goiri [email protected] Deustuko Unibertsitatea Ingeniaritza fakultatea http://www.deusto.es 2012/04/17

Upload: open-university-kmi

Post on 23-Jun-2015

472 views

Category:

Technology


3 download

DESCRIPTION

Programazioa II (2012): 5. gaia

TRANSCRIPT

Page 1: Errekurtsibitatea

ErrekurtsibitateaAitor Gomez-Goiri

[email protected]

Deustuko UnibertsitateaIngeniaritza fakultateahttp://www.deusto.es

2012/04/17

Page 2: Errekurtsibitatea

Aurkezpena

1 Zer da errekurtsibitatea?

2 Adibideak

3 Errekurtsibitate motak

4 Exekuzio errekurtsibitatea

5 Metodo errekurtsiboen egitura

6 Shell metodoa

7 Oharra

Page 3: Errekurtsibitatea

Aurkezpena

1 Zer da errekurtsibitatea?

2 Adibideak

3 Errekurtsibitate motak

4 Exekuzio errekurtsibitatea

5 Metodo errekurtsiboen egitura

6 Shell metodoa

7 Oharra

Page 5: Errekurtsibitatea

Zer da errekurtsibitatea?

Arazoak ebazteko era bat daPrograma baten unitate bat beraren arabera definitzen duErrekurtsiboa vs iteratiboa

Page 6: Errekurtsibitatea

Aurkezpena

1 Zer da errekurtsibitatea?

2 Adibideak

3 Errekurtsibitate motak

4 Exekuzio errekurtsibitatea

5 Metodo errekurtsiboen egitura

6 Shell metodoa

7 Oharra

Page 7: Errekurtsibitatea

Matematikan

Biderketam ∗ 0 = 0m ∗ n = mx(n − 1) + m

Berretzaileaa0 = 1an = a ∗ an−1 (n>0 denean)

Faktoriala0! = 1n! = n ∗ (n − 1)! (n>0 denean)

Page 9: Errekurtsibitatea

Naturan (fraktalak)

Page 10: Errekurtsibitatea

Akronimoetan

Frikiek asko erabiltzen dute baita... :-D(akronimo errekurtsiboei buruzko wikipedia orria)

Page 11: Errekurtsibitatea

Eta errealitatean... hiztegi bateanhitz bat bilatzerakoan

Page 12: Errekurtsibitatea

Aurkezpena

1 Zer da errekurtsibitatea?

2 Adibideak

3 Errekurtsibitate motak

4 Exekuzio errekurtsibitatea

5 Metodo errekurtsiboen egitura

6 Shell metodoa

7 Oharra

Page 13: Errekurtsibitatea

Definizio errekurtsibitatea

Egituretan: arbola, zerrenda, pila...Adibidez, zerrenda dinamiko bateko nodo bakoitzak, bestenodo bat du barnean (hurrengoa)

public class Nodo {

private Nodo hurrengoa;

...

}

Page 14: Errekurtsibitatea

Exekuzio errekurtsibitatea

Zer egiten du metodo honek?

public void metodoa( int i) {

if( i==0 ) System.out.println("Bukatu dut");

else {

metodoa( i-1 );

System.out.println( i + " " );

}

}

Page 15: Errekurtsibitatea

Aurkezpena

1 Zer da errekurtsibitatea?

2 Adibideak

3 Errekurtsibitate motak

4 Exekuzio errekurtsibitatea

5 Metodo errekurtsiboen egitura

6 Shell metodoa

7 Oharra

Page 16: Errekurtsibitatea

Errekurtsibitate zuzena

public static int metodoErrekurtsiboa(int n){

if (n == 0) {

return 1;

}

else {

return n * metodoErrekurtsiboa(n-1);

}

}

Page 17: Errekurtsibitatea

Errekurtsibitate ez-zuzena

public static boolean bakoitia (int zenbakia){

if (zenbakia==0)

return false;

else

return bikoitia(zenbakia-1);

}

public static boolean bikoitia (int zenbakia){

if (zenbakia==0)

return true;

else

return bakoitia(zenbakia-1);

}

Page 18: Errekurtsibitatea

Aurkezpena

1 Zer da errekurtsibitatea?

2 Adibideak

3 Errekurtsibitate motak

4 Exekuzio errekurtsibitatea

5 Metodo errekurtsiboen egitura

6 Shell metodoa

7 Oharra

Page 19: Errekurtsibitatea

Metodo errekurtsiboen egitura

Oinarrizko kasuaErrekurtsibitatea bukatzeko (1)

Kasu orokorraDagoen metodo berberari deitzen dio (errekurtsibitatea) (2)Dei bakoitza aurrekoa baino gertuago egon behar daoinarrizko kasutik (3)

Bestela bukaezina izango da eta ordenagailuaren memoriaagortuko du! (java.lang.StackOverflowError)

Page 20: Errekurtsibitatea

Adibidea

public static int faktoriala(int n){

if (n == 0) {

return 1;

}

else {

return n * faktoriala(n-1);

}

}

Page 21: Errekurtsibitatea

Aurkezpena

1 Zer da errekurtsibitatea?

2 Adibideak

3 Errekurtsibitate motak

4 Exekuzio errekurtsibitatea

5 Metodo errekurtsiboen egitura

6 Shell metodoa

7 Oharra

Page 22: Errekurtsibitatea

Shell metodoaAskotan erabiltzen da metodo public bat private denmetodo errekurtsibora deitzeko, beharrezko hasierakoparametroak bidaliz

// Zerrenda dinamiko klasearen barruan

// Kanpotik ez dutenez Nodo klasea ezagutuko,

// metodo hau private egingo dugu

private void elementuakErakutsiErr(Nodo n){

if (n != null){

System.out.println(n.elementua);

elementuakErakutsiErr(n.hurrengoa);

}

}

// Kanpotik deitu ahal duten metodoa egiten dugu

// (shell metodoa hain zuzen ere)

public void elementuakErakutsi(ZerrendaDinamikoa z){

// Hasierako balioa ematen diogu (z.lehenengoa)

elementuakErakutsiErr(z.lehenengoa);

}

Page 23: Errekurtsibitatea

Aurkezpena

1 Zer da errekurtsibitatea?

2 Adibideak

3 Errekurtsibitate motak

4 Exekuzio errekurtsibitatea

5 Metodo errekurtsiboen egitura

6 Shell metodoa

7 Oharra

Page 24: Errekurtsibitatea

Kontuz

Errekurtsibitateak soluzio ulergarriagoak ematen ditu, bainanormalean ez dira efizienteak

Page 25: Errekurtsibitatea

Lizentzia

Irudien guztien jabetza intelektuala bere egileena* da,gainontzeko edukiak Creative Commons by-sa 3.0

lizentziapean daude.

* xtremo, OpenStreetMap contributors, Pim Fijneman,cowicide, waltstoneburner, Ævar Arnfjoro Bjarmasoneta Pierre Pouliquin.