Marius Heil
Erfahrenes Mitglied
Hi,
ich hab grad das Problem, dass ich in einem Zweidimensionalen Array alle Alles mit allem vergleichen muss. Da macht sich rekursion ganz toll. Witzigerweise verliert Flash die übergebenen Variablen aber nach ein paar Zeilen:
Die Funktion muss man nicht verstehen um das Problem zu verstehen.
Wie man sieht hab ich zum testen 3x trace() eingebaut um die Ausgabe zu sehen. Dann hab ich das ganze im Debugger getestet. Bei trace 1 wird als e noch 1 ausgebeben, in t steht sowas wie (2)(3). einen Schritt weiter jedoch, wenn zb die For Schleife anfängt sind e und t wieder 0 und "".
Das passt mir gar nicht, da dadurch ne Endlosschleife entsteht,...
PS: Nicht so sehr von den Kommentaren beeinflussen lassen, die dürfte man eh nciht verstehen
Marius
ich hab grad das Problem, dass ich in einem Zweidimensionalen Array alle Alles mit allem vergleichen muss. Da macht sich rekursion ganz toll. Witzigerweise verliert Flash die übergebenen Variablen aber nach ein paar Zeilen:
PHP:
//Wir rufen un sere Rekursive funktion mit dem anfangsparameter auf
rekurs("", 0);
//Rekursive Funktion: string der bereits getesteten Zahlen; Nummer des jetzigen Elements: -1 < e < arr.length
function rekurs(t, e){
trace("1"+t);
//Für jedes Element
for (i=0; i<combo[e].length; i++){
trace("2"+t);
//Die Variablen durchnummerieren, sonst überschreiben sie sich
tCount++;
//WENN Zahl1 UND Zahl2 noch unbenutzt UND nicht undefiniert
if ( t.indexOf("("+combo[e][i]+")", 0) == -1 && t.indexOf("("+e+")", 0) == -1 && combo[e][i] != undefined){
//Die Zahlen als benutzt in neuer Variable abspeichern, tCount +1 um einzigkeit der Variablen zu garantieren
trace("3"+t);
baum["_"+tCount] = t+"("+combo[e][i]+")("+e+")";
//Zahlen schon benutzt, trotzdem weiter
} else {
baum["_"+tCount] = t;
}
//Kette an die nächste rekurs() abgeben, tCoutn wurde jedoch bereits erhöht, also -1
rekurs(baum["_"+tCount]+"", e+1);
}
}
Wie man sieht hab ich zum testen 3x trace() eingebaut um die Ausgabe zu sehen. Dann hab ich das ganze im Debugger getestet. Bei trace 1 wird als e noch 1 ausgebeben, in t steht sowas wie (2)(3). einen Schritt weiter jedoch, wenn zb die For Schleife anfängt sind e und t wieder 0 und "".
Das passt mir gar nicht, da dadurch ne Endlosschleife entsteht,...
PS: Nicht so sehr von den Kommentaren beeinflussen lassen, die dürfte man eh nciht verstehen

Marius