gpt4 book ai didi

java - 带递归排序的 StackOverFlowError

转载 作者:行者123 更新时间:2023-12-01 13:23:42 24 4
gpt4 key购买 nike

当我尝试对长度大于 50 左右的数组使用递归排序时,出现 StackOverFlowError。如果数组足够小而不会引发此错误,则该方法可以正确排序。有什么办法可以解决这个问题吗?

public class RecursiveSort
{
static double[] arr;
static int count = 0;
public static void main(String[] args)
{
double[] anArr = new double[50];

for(int i = 0; i < anArr.length; i++) {

anArr[i] = Math.random();

}



arr = anArr;
recurseSort(arr.length - 1);
display();
}

public static void recurseSort(int position)
{

if(position == 0)
{
position = arr.length - 1;
count++;
}
if (arr[position] < arr[position - 1])
{
double n = arr[position - 1];
arr[position - 1] = arr[position];
arr[position] = n;
}

if(count <= arr.length)
recurseSort(--position);

}

public static void display()
{
for(double n : arr)
System.out.println(n);
}

}

最佳答案

您的递归是尾递归,因此您可以将其替换为 do-while

public static void recurseSort(int position)
{

do{

if(position <= 0)
{
position = arr.length - 1;
count++;
}
if (arr[position] < arr[position - 1])
{
double n = arr[position - 1];
arr[position - 1] = arr[position];
arr[position] = n;
}


position--;

}while(count <= arr.length); //end while

}

关于java - 带递归排序的 StackOverFlowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21897308/

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