Étant donné un tableau non trié, recherchez les valeurs max et min. J'essaye de le faire d'une manière récursive, diviser et conquérir mais je continue à obtenir une erreur de débordement de pile. J'ai débogué et je continue d'obtenir l'erreur dans mes appels récursifs, mais je ne sais pas ce qui ne va pas ou comment le réparer.Récursif - erreur de dépassement de pile
J'ai des variables statiques min et max.
Merci pour l'information et l'aide!
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];
}
}
Semble vous manque le point de sortie, vous devez dire quand le code doit Arrêtez. Par exemple start> = end. – Prisoner
Je soupçonne dans votre état de base de la récursivité. –
Eh bien 'setMaxMin' ne regarde jamais que les deux premiers index, donc comment cela fonctionnera si le tableau est plus long, – juharr