2014-11-02 61 views
1

我想打印所有大小爲n的二進制數,例如,如果大小爲3,我想打印所有數字從0到(2^3)-1的二進制形式,下面,如果我的代碼implementating,它打印000,給我這個錯誤使用遞歸打印所有大小爲n的二進制數

"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 

下面是我的代碼

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); 

} 

} 

請幫我找出錯誤。謝謝

+0

是否有使用遞歸? – 2014-11-02 17:33:06

+1

你使用了'StackOverflowError'嗎? – 2014-11-02 17:42:55

回答