J'essaie de trouver tous les sous-ensembles d'une chaîne donnée. Par exemple, la chaîne "Rum" aurait les sous-ensembles "rhum", "ru", "rm", "r", "um", "u", "m", et "". Voici mon code à ce jour:Infinite Récursion pour trouver les sous-ensembles d'une chaîne?
import java.util.Collections;
import java.util.ArrayList;
import java.util.List;
public class SubsetGenerator
{
private String word;
public SubsetGenerator(String in)
{
word=in;
}
public ArrayList<String> findSubsets()
{
ArrayList<String> subsets = new ArrayList<String>();
String temp = word;
if(temp.length()==1)
{
subsets.add(temp);
return subsets;
}
else
{
String removed = temp.substring(0,1);
temp = temp.substring(1);
findSubsets();
subsets.add(word);
}
return subsets;
}
}
et voici le testeur:
import java.util.Collections;
import java.util.ArrayList;
import java.util.List;
/**
This program tests the subset generator.
*/
public class SubsetGeneratorTester
{
public static void main(String[] args)
{
SubsetGenerator generator = new SubsetGenerator("rum");
List<String> subsets = generator.findSubsets();
// Sort the result for checking
Collections.sort(subsets);
System.out.println(subsets);
System.out.println("Expected: [, m, r, rm, ru, rum, u, um]");
}
}
Que êtes-vous en ce moment? – ifly6
@ ifly6 une récursion infinie Exception in thread "main" java.lang.StackOverflowError \t à java.lang.String.substring (String.java:1969) \t à SubsetGenerator.findSubsets (SubsetGenerator.java:26) \t à SubsetGenerator.findSubsets (SubsetGenerator.java:26) \t à SubsetGenerator.findSubsets (SubsetGenerator.java:26) \t à SubsetGenerator.findSubsets (SubsetGenerator.java:26) \t à SubsetGenerator.findSubsets (SubsetGenerator.java:26) \t à SubsetGenerator.findSubsets (SubsetGenerator.java:26) \t at SubsetGenerator.findSubsets (SubsetGenerator.java:26 – AnaviLucas
Vous devriez regarder la réponse SO sur [StackOverflowError] (http://stackoverflow.com/questions/214741/what-is-a-stackoverflowerror). – ifly6