Frank: Rekursion

Hi Leute,

irgendwas stimmt mit meiner Rekursion nicht.

searchId(initID, depth);

function searchId(initID, depth)
{
  if (depth>0)
  {
    tmpID = searchArray(initID).split(",");
    for (i=0;i<tmpID.length;i++)
    {
      alert(tmpID[i]);
      searchId(tmpID[i], depth-1);
    }
  }
}

Der Algorithmus geht zwar voll in die Tiefe, aber
anschließend bricht er einfach ab ohne davor die restliche
for-schleife abzuarbeiten. Woran liegt das?

Gruß, Frank

  1. Lieber Frank,

    Der Algorithmus geht zwar voll in die Tiefe, aber
    anschließend bricht er einfach ab ohne davor die restliche
    for-schleife abzuarbeiten. Woran liegt das?

    was sagt die Fehlerkonsole?

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

  2. Hallo Frank,

    Der Algorithmus geht zwar voll in die Tiefe, aber
    anschließend bricht er einfach ab ohne davor die restliche
    for-schleife abzuarbeiten. Woran liegt das?

    Das liegt daran, dass die Variable i nicht lokal ist.
    Die Variable wird also erstmal in jedem rekursiven Aufruf auf 0 gesetzt bis zu depth = 1. Dort wird dann die for-Schleife einmal abgearbeitet. Anschließend hat i den Maximalwert und alle anderen Schleifendurchläufe werden abgebrochen.

    for (var i=0;i<tmpID.length;i++)

    So sollte es funktionieren.

    Grüße

    Daniel

  3. Wie wärs denn, wenn Du das lokale i auch lokal deklarierst?

    Gruß,

    Houyhnhnm