gpt4 book ai didi

java - 使用递归打印大小为 n 的所有二进制数

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:40 26 4
gpt4 key购买 nike

我正在尝试打印所有大小为 n 的二进制数字,例如,如果大小为 3 ,我想以二进制形式打印从 0 到 (2^3)-1 的所有数字,下面如果我的代码实现,它会打印 000 并给我这个错误

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

}

}

请帮我找出错误。谢谢

最佳答案

一个问题是您没有给出任何递归终止条件。所以该函数无限递归。没有任何条件可以停止调用。

这就是为什么为函数调用分配的堆栈空间不足并且您得到StackOverflowError

在此处查看更多内容:

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

What is a StackOverflowError?

关于java - 使用递归打印大小为 n 的所有二进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26702193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com