/ / wypisz wszystkie liczby binarne o rozmiarze n używając rekurencji - java, rekursja, binarnie

wypisz wszystkie liczby binarne o rozmiarze n za pomocą rekurencji - java, rekursja, binarna

Próbuję wydrukować wszystkie liczby binarne o rozmiarze n,na przykład jeśli rozmiar wynosi 3, chcę wydrukować wszystkie liczby od 0 do (2 ^ 3) -1 w postaci binarnej, poniżej, jeśli mój kod implementuje, drukuje 000 i podaje mi ten błąd

"Exception in thread "main" java.lang.StackOverflowError
at java.lang.String.getChars(String.java:854)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:391)
at java.lang.StringBuilder.append(StringBuilder.java:119)
at java.lang.StringBuilder.<init>(StringBuilder.java:93)
at NBinary.tobinary(NBinary.java:11)
at NBinary.tobinary(NBinary.java:12)".

String temp = str+x; is line 11
tobinary(temp, size); is line 12

poniżej jest mój kod

public class NBinary {

static int arr[] = {0,1};
static void tobinary(String str,int size){

if(str.length() == size){
System.out.println(str);
}
for(int x : arr){
String temp = str+x;
tobinary(temp, size);
}


}

public static void main(String[]args){

tobinary("", 3);

}

}

pomóż mi znaleźć błąd. dzięki

Odpowiedzi:

0 dla odpowiedzi № 1

Jednym problemem jest to, że nie dajesz żadnych Zakończenie rekursji stan. Więc funkcja powtarza się nieskończenie. Nie ma warunków do zaprzestania dzwonienia.

Dlatego stos przydzielony do wywołania funkcji kończy się w przestrzeni i dostajesz StackOverflowError.

Zobacz więcej tutaj:

http://docs.oracle.com/javase/7/docs/api/java/lang/StackOverflowError.html

Co to jest StackOverflowError?