Tach!
Ich habe das jetzt korrigiert. Dabei habe ich beachtet, dass alle Parameter der Funktion übergeben werden. Bei meinem ersten Post war "needle" noch global und ich übergebe nun die variable "matches" an jede weitere Rekursion.
Das würde ich nicht machen. matches ist das Ergebnis, das "unten rausfallen" sollten. So wie du es jetzt hast, arbeiten die inneren Ausrufe anders als der äußere. Das muss ja nicht uneinheitlich sein.
Hmm ... vielleicht wäre es performanter ich würde matches = matches || [] weglassen und einfach einfordern, dass drei Parameter übergeben werden, von denen einer eben ein leeres Array ist?
Mikrooptimierung. Wenn du viele Durchläufe brauchst, um überhaupt ein auswertbares Messergebnis zu bekommen, in der Praxis aber immer nur einer stattfindet, dann ist eine Optimierung in der Regel sinnlos.
dedlfix.