Errekurtsibitatea
-
Upload
open-university-kmi -
Category
Technology
-
view
472 -
download
3
description
Transcript of Errekurtsibitatea
ErrekurtsibitateaAitor Gomez-Goiri
Deustuko UnibertsitateaIngeniaritza fakultateahttp://www.deusto.es
2012/04/17
Aurkezpena
1 Zer da errekurtsibitatea?
2 Adibideak
3 Errekurtsibitate motak
4 Exekuzio errekurtsibitatea
5 Metodo errekurtsiboen egitura
6 Shell metodoa
7 Oharra
Aurkezpena
1 Zer da errekurtsibitatea?
2 Adibideak
3 Errekurtsibitate motak
4 Exekuzio errekurtsibitatea
5 Metodo errekurtsiboen egitura
6 Shell metodoa
7 Oharra
????????????????????????????????
Zer da errekurtsibitatea?
Arazoak ebazteko era bat daPrograma baten unitate bat beraren arabera definitzen duErrekurtsiboa vs iteratiboa
Aurkezpena
1 Zer da errekurtsibitatea?
2 Adibideak
3 Errekurtsibitate motak
4 Exekuzio errekurtsibitatea
5 Metodo errekurtsiboen egitura
6 Shell metodoa
7 Oharra
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)
Jokuetan
HannoiLabirintoa
Naturan (fraktalak)
Akronimoetan
Frikiek asko erabiltzen dute baita... :-D(akronimo errekurtsiboei buruzko wikipedia orria)
Eta errealitatean... hiztegi bateanhitz bat bilatzerakoan
Aurkezpena
1 Zer da errekurtsibitatea?
2 Adibideak
3 Errekurtsibitate motak
4 Exekuzio errekurtsibitatea
5 Metodo errekurtsiboen egitura
6 Shell metodoa
7 Oharra
Definizio errekurtsibitatea
Egituretan: arbola, zerrenda, pila...Adibidez, zerrenda dinamiko bateko nodo bakoitzak, bestenodo bat du barnean (hurrengoa)
public class Nodo {
private Nodo hurrengoa;
...
}
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 + " " );
}
}
Aurkezpena
1 Zer da errekurtsibitatea?
2 Adibideak
3 Errekurtsibitate motak
4 Exekuzio errekurtsibitatea
5 Metodo errekurtsiboen egitura
6 Shell metodoa
7 Oharra
Errekurtsibitate zuzena
public static int metodoErrekurtsiboa(int n){
if (n == 0) {
return 1;
}
else {
return n * metodoErrekurtsiboa(n-1);
}
}
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);
}
Aurkezpena
1 Zer da errekurtsibitatea?
2 Adibideak
3 Errekurtsibitate motak
4 Exekuzio errekurtsibitatea
5 Metodo errekurtsiboen egitura
6 Shell metodoa
7 Oharra
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)
Adibidea
public static int faktoriala(int n){
if (n == 0) {
return 1;
}
else {
return n * faktoriala(n-1);
}
}
Aurkezpena
1 Zer da errekurtsibitatea?
2 Adibideak
3 Errekurtsibitate motak
4 Exekuzio errekurtsibitatea
5 Metodo errekurtsiboen egitura
6 Shell metodoa
7 Oharra
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);
}
Aurkezpena
1 Zer da errekurtsibitatea?
2 Adibideak
3 Errekurtsibitate motak
4 Exekuzio errekurtsibitatea
5 Metodo errekurtsiboen egitura
6 Shell metodoa
7 Oharra
Kontuz
Errekurtsibitateak soluzio ulergarriagoak ematen ditu, bainanormalean ez dira efizienteak
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.