gpt4 book ai didi

java堆栈溢出错误?

转载 作者:行者123 更新时间:2023-12-02 05:38:56 27 4
gpt4 key购买 nike

Exception in thread "main" java.lang.StackOverflowError
at Search.mergeSort(Search.java:41)
at Search.mergeSort(Search.java:43)
at Search.mergeSort(Search.java:43)
at Search.mergeSort(Search.java:43)
at Search.mergeSort(Search.java:43)

当我尝试运行我的程序时,我不断收到此错误。我的程序应该从文件中获取字符串输入并使用此算法对其进行排序。有任何想法吗?代码中有问题的行:

public static void mergeSort(String[] word, int p, int r){
int q;
if(p<r){
q=p+r/2;
mergeSort(word,p,q);
mergeSort(word, q+1,r);
merge(word, p, q, r);
}
}

编辑

这两个函数对 String 数组进行排序,方法是将数组分成两半,分别对每一半进行排序,然后将它们合并在一起。 Int q 是中间点,正在评估的数组是从 word[p] 到 word[q] 和 word[q+1] 到 word[r]。这是合并函数:

public static void merge(String[] word, int p, int q, int r){
int n1 = q-p+1;
int n2 = r-q;
String[] L = new String[n1];
String[] R = new String[n2];
int i, j, k;

for(i=0; i<n1; i++) L[i] = word[p+i];
for(j=0; j<n2; j++) R[j] = word[q+r+1];
i=0; j=0;
for(k=p; k<=r; k++){
if(i<n1 && j<n2){
if(L[i].compareTo(R[j])<0){
word[k] = L[i];
i++;
}else{
word[k] = R[j];
j++;
}
}else if(i<n1){
word[k] = L[i];
i++;
}else if(j<n2){
word[k] = R[j];
j++;
}
}

最佳答案

使用调试器进行演示。您将确切地看到它是如何导致无限递归的。 IDE(Eclipse、IntelliJ)内置了它们。

关于java堆栈溢出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24689207/

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