12. Aurkezpena
1 Zer da errekurtsibitatea?
2 Adibideak
3 Errekurtsibitate motak
4 Exekuzio errekurtsibitatea
5 Metodo errekurtsiboen egitura
6 Shell metodoa
7 Oharra
13. Definizio errekurtsibitatea
Egituretan: arbola, zerrenda, pila...
Adibidez, zerrenda dinamiko bateko nodo bakoitzak, beste
nodo bat du barnean (hurrengoa)
public class Nodo {
private Nodo hurrengoa;
...
}
14. 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 + " " );
}
}
15. Aurkezpena
1 Zer da errekurtsibitatea?
2 Adibideak
3 Errekurtsibitate motak
4 Exekuzio errekurtsibitatea
5 Metodo errekurtsiboen egitura
6 Shell metodoa
7 Oharra
16. Errekurtsibitate zuzena
public static int metodoErrekurtsiboa(int n){
if (n == 0) {
return 1;
}
else {
return n * metodoErrekurtsiboa(n-1);
}
}
17. 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);
}
18. Aurkezpena
1 Zer da errekurtsibitatea?
2 Adibideak
3 Errekurtsibitate motak
4 Exekuzio errekurtsibitatea
5 Metodo errekurtsiboen egitura
6 Shell metodoa
7 Oharra
19. Metodo errekurtsiboen egitura
Oinarrizko kasua
Errekurtsibitatea bukatzeko (1)
Kasu orokorra
Dagoen metodo berberari deitzen dio (errekurtsibitatea) (2)
Dei bakoitza aurrekoa baino gertuago egon behar da
oinarrizko kasutik (3)
Bestela bukaezina izango da eta ordenagailuaren memoria
agortuko du! (java.lang.StackOverflowError)
20. Adibidea
public static int faktoriala(int n){
if (n == 0) {
return 1;
}
else {
return n * faktoriala(n-1);
}
}
21. Aurkezpena
1 Zer da errekurtsibitatea?
2 Adibideak
3 Errekurtsibitate motak
4 Exekuzio errekurtsibitatea
5 Metodo errekurtsiboen egitura
6 Shell metodoa
7 Oharra
22. Shell metodoa
Askotan erabiltzen da metodo public bat private den
metodo errekurtsibora deitzeko, beharrezko hasierako
parametroak 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);
}
23. Aurkezpena
1 Zer da errekurtsibitatea?
2 Adibideak
3 Errekurtsibitate motak
4 Exekuzio errekurtsibitatea
5 Metodo errekurtsiboen egitura
6 Shell metodoa
7 Oharra
25. 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 Bjarmason
eta Pierre Pouliquin.