2017-05-03 6 views
-1

Ich versuche, ein Problem zu lösen, das die Anzahl gültiger Lösungen für ein Schachproblem findet, und wenn der Code gedruckt wird, druckt er 92 Arrays eines Objekts PartialSolution, das korrekt ist Lösungen. Dies geschieht rekursiv und ich muss diese Arrays zu einer Array-Liste hinzufügen, aber ich kann nicht herausfinden, wie. Hier ist mein Code:Erstellen einer ArrayList innerhalb einer rekursiven Methode

public ArrayList<PartialSolution> solve(PartialSolution sol){ 
    ArrayList<PartialSolution> solutions = new ArrayList<PartialSolution>(); 
    int exam = sol.examine(); 
    if(exam == PartialSolution.accept){ 
     solutions.add(sol); 
    } 
    else if(exam != PartialSolution.abandon){ 
     for(PartialSolution p : sol.extend()){ 
      solve(p); 
     } 
    } 
    return solutions; 
} 
+1

Verwenden Sie 'x'? – nandsito

+0

Möchten Sie eine Arraylist zum Speichern der Lösungen verwenden, damit Sie keine unnötigen Berechnungen durchführen müssen? Oder möchten Sie nur eine Arraylist, um die Lösungen für den späteren Gebrauch zu speichern? –

+0

Ich brauche die Array-Liste, um die Lösungen für die spätere Verwendung @MoeA zu speichern –

Antwort

0

eine Variable in der Klasse definieren und Ihre Listen auf diese Liste anstelle von Druck hinzuzufügen. Oder machen Sie Ihre Solve-Methode ein zweites Argument als Liste und ändern Sie den Rückgabetyp von void in die Liste. Geben Sie für den ersten Aufruf eine leere Liste und übergeben Sie diese Liste in jedem rekursiven Aufruf. Am Ende Rückkehr diese Liste

0

Wenn Sie die Arraylist müssen nur die Lösungen für eine spätere Verwendung speichern, dann sollten Sie die Liste aus dem Verfahren wie schaffen:

static ArrayList<PartialSolution> x = new ArrayList<PartialSolution>(); 

dann fügen Sie einfach die Lösung auf die Liste wenn Sie sol drucken

Verwandte Themen