Snucky: rekursive Funktion

Beitrag lesen

Hallo,

in einem meiner Scripte soll in zufälliger Reihenfolge Werte einmalig aus einem Array gelesen werden. Ich speichere die genutzten keys in einem weiteren Array ab und gewährleiste mit einer Abfrage bei einem weiteren Funktionsaufruf, dass benutzte keys nicht doppelt verwendet werden, sondern ein neuer Aufruf des Zufallsalrogorhythmusses erofolgt. Letzteres geschieht per Rekursion. Nur funktioniert das Konzept in der Realität nicht:

var keys_used=new Array();
//0 ist immer minimum für den Rückgabewert
function errechne_zufall(maximum) {
 var ausschlag=Math.random();
 var rueck=Math.round(maximum*ausschlag);
 if (in_arr(rueck,keys_used)) {
  errechne_zufall(maximum);
 }
 else {
  keys_used.push(rueck);
  return rueck;
 }
}
function in_arr(needle,array) {
 var found=false;
 suche:for (var i=0; i<array.length; i++)
  if (array[i]==needle) {
   found=true;
   break suche;
  }
 return found;
}

Die einfache Frage ist, was mit der Rekursion nicht stimmt. Ich weiß es nicht.

Vielen Dank,
Snucky.