1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Rekursion bedenklich?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Andro-medanebel, 19.04.2011.

  1. Andro-medanebel, 19.04.2011 #1
    Andro-medanebel

    Andro-medanebel Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    46
    Erhaltene Danke:
    0
    Registriert seit:
    09.10.2010
    Mein Grafikaufbau und meine Programmlogik befindet sich
    in onSizeChanged (erst in onSizeChanged sind Breite und
    Höhe bekannnt und diese lese ich aus).

    Code:
    @Override
    protected void onSizeChanged(int w, int h, int ow, int oh)
    {
     MeinGanzesProgramm();
    }
    
    void  MeinGanzesProgramm() 
    {
     ...
     if (neustart==true) {MeinGanzesProgramm();}
    }
    
    Beim Drehen des Displays wird onSizeChanged aufgerufen
    und MeinGanzesProgramm() erneut aufgerufen,
    was einem Neustart und damit auch Neuaufbau der Grafik
    entspricht, was auch so gewollt ist.

    Zusätzlich soll mein Programm eine Menü-Option
    "Neustart" bekommen, wo ich dann auch
    MeinGanzesProgramm() aufrufen will.

    Allerdings frage ich mich, ob der Neustart durch Rekursion
    problematisch ist, da sich evtl. ein Stapel von Rücksprungadressen
    aufbaut und es bei sehr vielen rekursiven Aufrufen ein Stapelüberlauf
    geben könnte.

    Ist meine Sorge berechtigt?

    Wenn ja:
    Ist es möglich, die letzte Rücksprungadresse zu löschen,
    bevor MeinGanzesProgramm() erneut aufgerufen wird,
    so dass kein Stapel von Rücksprungadressen entsteht?
     
  2. v Ralle v, 19.04.2011 #2
    v Ralle v

    v Ralle v Android-Lexikon

    Beiträge:
    913
    Erhaltene Danke:
    199
    Registriert seit:
    27.08.2010
    Naja, so wie ich das verstehe, sollte MeinGanzesProgramm(); nur 2 mal aufgerufen werden. Denn wenn du über der if Bedingung die Variable neustart nicht veränderst, kann es zu einer Endlosschleife kommen.

    Das ganz Konstrukt ist merkwürdig gebaut. Sollte es bei nur ein paar Aufrufen bleiben, ist es sicher zu verwenden.
     
  3. SeraphimSerapis, 20.04.2011 #3
    SeraphimSerapis

    SeraphimSerapis Android-Guru

    Beiträge:
    3,072
    Erhaltene Danke:
    1,138
    Registriert seit:
    27.02.2009
    Ich würd das jetzt auch noch nicht als Rekursion bezeichnen.
    Zwar ruft die Methode sich selbst wieder auf, aber vermutlich nicht mehrere x-male zum Berechnen eines Werts oder ähnliches ;)

    Ich nutze sowas auch hin und wieder, wobei man dann immer schauen sollte, dass die Funktion nicht zu oft läuft.
     

Diese Seite empfehlen