SlideShare a Scribd company logo
1 of 25
Download to read offline
Errekurtsibitatea
             ´
      Aitor Gomez-Goiri
   aitor.gomez@deusto.es

      Deustuko Unibertsitatea
       Ingeniaritza fakultatea
      http://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 da
      Programa baten unitate bat beraren arabera definitzen du
      Errekurtsiboa 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



     Biderketa
         m∗0=0
         m ∗ n = mx(n − 1) + m
     Berretzailea
         a0 = 1
         an = a ∗ an−1 (n>0 denean)
     Faktoriala
         0! = 1
         n! = n ∗ (n − 1)! (n>0 denean)
Jokuetan



     Hannoi
     Labirintoa
Naturan (fraktalak)
Akronimoetan




     Frikiek asko erabiltzen dute baita... :-D
     (akronimo errekurtsiboei buruzko wikipedia orria)
Eta errealitatean... hiztegi batean
hitz 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, beste
      nodo 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 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)
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 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);
  }
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, baina
  normalean 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 Bjarmason
           eta Pierre Pouliquin.

More Related Content

More from Open University, KMi

Coordination of Resource-Constrained Devices through a Distributed Semantic S...
Coordination of Resource-Constrained Devices through a Distributed Semantic S...Coordination of Resource-Constrained Devices through a Distributed Semantic S...
Coordination of Resource-Constrained Devices through a Distributed Semantic S...Open University, KMi
 
Konposizioa, herentzia eta polimorfismoa
Konposizioa, herentzia eta  polimorfismoa Konposizioa, herentzia eta  polimorfismoa
Konposizioa, herentzia eta polimorfismoa Open University, KMi
 
"On the complementarity of Triple Spaces and the Web of Things" poster @ WoT2011
"On the complementarity of Triple Spaces and the Web of Things" poster @ WoT2011"On the complementarity of Triple Spaces and the Web of Things" poster @ WoT2011
"On the complementarity of Triple Spaces and the Web of Things" poster @ WoT2011Open University, KMi
 
A Triple Space-Based Semantic Distributed Middleware for Internet of Things
A Triple Space-Based Semantic Distributed Middleware for Internet of ThingsA Triple Space-Based Semantic Distributed Middleware for Internet of Things
A Triple Space-Based Semantic Distributed Middleware for Internet of ThingsOpen University, KMi
 

More from Open University, KMi (8)

Coordination of Resource-Constrained Devices through a Distributed Semantic S...
Coordination of Resource-Constrained Devices through a Distributed Semantic S...Coordination of Resource-Constrained Devices through a Distributed Semantic S...
Coordination of Resource-Constrained Devices through a Distributed Semantic S...
 
RESTful Triple Spaces of Things
RESTful Triple Spaces of ThingsRESTful Triple Spaces of Things
RESTful Triple Spaces of Things
 
Konposizioa, herentzia eta polimorfismoa
Konposizioa, herentzia eta  polimorfismoa Konposizioa, herentzia eta  polimorfismoa
Konposizioa, herentzia eta polimorfismoa
 
Fitxategiak
FitxategiakFitxategiak
Fitxategiak
 
"On the complementarity of Triple Spaces and the Web of Things" poster @ WoT2011
"On the complementarity of Triple Spaces and the Web of Things" poster @ WoT2011"On the complementarity of Triple Spaces and the Web of Things" poster @ WoT2011
"On the complementarity of Triple Spaces and the Web of Things" poster @ WoT2011
 
Triple Space adaptation for IoT
Triple Space adaptation for IoTTriple Space adaptation for IoT
Triple Space adaptation for IoT
 
A Triple Space-Based Semantic Distributed Middleware for Internet of Things
A Triple Space-Based Semantic Distributed Middleware for Internet of ThingsA Triple Space-Based Semantic Distributed Middleware for Internet of Things
A Triple Space-Based Semantic Distributed Middleware for Internet of Things
 
Introducción a PHP5
Introducción a PHP5Introducción a PHP5
Introducción a PHP5
 

Errekurtsibitatea

  • 1. Errekurtsibitatea ´ Aitor Gomez-Goiri aitor.gomez@deusto.es Deustuko Unibertsitatea Ingeniaritza fakultatea http://www.deusto.es 2012/04/17
  • 2. Aurkezpena 1 Zer da errekurtsibitatea? 2 Adibideak 3 Errekurtsibitate motak 4 Exekuzio errekurtsibitatea 5 Metodo errekurtsiboen egitura 6 Shell metodoa 7 Oharra
  • 3. Aurkezpena 1 Zer da errekurtsibitatea? 2 Adibideak 3 Errekurtsibitate motak 4 Exekuzio errekurtsibitatea 5 Metodo errekurtsiboen egitura 6 Shell metodoa 7 Oharra
  • 5. Zer da errekurtsibitatea? Arazoak ebazteko era bat da Programa baten unitate bat beraren arabera definitzen du Errekurtsiboa vs iteratiboa
  • 6. Aurkezpena 1 Zer da errekurtsibitatea? 2 Adibideak 3 Errekurtsibitate motak 4 Exekuzio errekurtsibitatea 5 Metodo errekurtsiboen egitura 6 Shell metodoa 7 Oharra
  • 7. Matematikan Biderketa m∗0=0 m ∗ n = mx(n − 1) + m Berretzailea a0 = 1 an = a ∗ an−1 (n>0 denean) Faktoriala 0! = 1 n! = n ∗ (n − 1)! (n>0 denean)
  • 8. Jokuetan Hannoi Labirintoa
  • 10. Akronimoetan Frikiek asko erabiltzen dute baita... :-D (akronimo errekurtsiboei buruzko wikipedia orria)
  • 11. Eta errealitatean... hiztegi batean hitz bat bilatzerakoan
  • 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
  • 24. Kontuz Errekurtsibitateak soluzio ulergarriagoak ematen ditu, baina normalean ez dira efizienteak
  • 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.