-3
정렬되지 않은 배열에서 최대 값과 최소값을 찾습니다. 재귀, 나누기 및 정복 방식으로이 작업을 수행하려고하지만 스택 오버플로 오류가 계속 발생합니다. 디버깅을하고 재귀 호출에서 오류가 계속 발생하지만 잘못되었거나 오류를 수정하는 방법을 알지 못합니다.재귀 - 스택 오버플로 오류
나는 정적 변수와 최대 변수를 가지고있다.
정보 및 도움을 제공해 주셔서 감사합니다!
void FindMinAndMaxValues(int[] array out int min, out int max)
{
min = int.MaxValue,
max = int.MinValue;
foreach(var val in array)
{
max = (val > max) ? val : max;
min = (val < min) ? val : min;
}
}
내가 여기 매개 변수를 사용하고 있습니다 :
static void findMaxMin(int[] array, int start, int end)
{
if (end == 2)
{
setMaxMin(array);
}
else
{
int mid = ((end)/2);
findMaxMin(array, start, mid);
findMaxMin(array, mid + 1, end);
}
}
private static void setMaxMin(int[] array)
{
if (array[0] > array[1])
{
max = array[0];
min = array[1];
}
else
{
min = array[0];
max = array[1];
}
}
당신은 출구 지점 누락 한 것 같은데, 당신은 때 코드가해야 말할 필요 중지. 예를 들어 start> = end입니다. – Prisoner
기본 조건에서 재귀가 의심됩니다. –
글쎄,'setMaxMin'은 처음 두 개의 인덱스만을 살펴본 것이므로 배열이 길면 정확하게 작동 할 것입니다. – juharr