Maior valor em um Array usando recursividade

Pessoal, levando em consideração o código abaixo

public class Recursao
{  
    /**
     * Find the largest item in an array of integers.  
     * Assume the array contains at least one item.
     * 
     * @param       numbers     an array of integers
     * @return      the largest number in the array of intgers
     */
    
    public static int largestArrayItem(int [] numbers)
    {
        return largestArrayItemAuxiliary(numbers, 0);
    }
    
    /**
     * The helper method for largestArrayItem.
     * 
     * @param       numbers     an array of integers
     * @param       index       the current index in the array to examine
     * @return      the largest number in the array of integers
     */
    
    private static int largestArrayItemAuxiliary(int [] numbers, int index)
    {
    }
}

Como eu posso modificar largestArrayItemAuxiliary para achar o maior valor no array numbers usando recursividade sem mudar ou adicionar os parâmetros de entrada?

Eu conseguir resolver criando uma variável mas a solução correta não é criando uma variável, no máximo apenas uma local na função.

Aqui o código q fiz até agora.


int aux = 0;
private static int largestArrayItemAuxiliary(int [] numbers, int index)
    {   
        if( index == numbers.length )
        {
            return numbers[aux];
        }
        else
        {
            if(numbers[index]>numbers[aux])
            {
                aux = index;
                return largestArrayItemAuxiliary(numbers,index+1);
            }
            else
            {
                return largestArrayItemAuxiliary(numbers,index+1);
            }
        }
        
    }

Alguém teria uma ideia, acredito que deve ser algo bem simples mas estou tão esgotado tentando que não consigo achar outra solução, sempre é melhor ter a opinião de outros. :slight_smile:

Se o ‘index’ estiver apontando a última posição, retorne o valor dessa posição;
caso contrário, compare o número da posição dada por ‘index’ com o resultado do método chamado com ‘index+1’: retorna o maior desses dois.

Obrigado cara. Ficou assim.

    private static int largestArrayItemAuxiliary(int [] numbers, int index)
    {           
        if (index == numbers.length-1)
        {    
            return numbers[index];
        } 
        else 
        { 
            int maior = largestArrayItemAuxiliary(numbers, index+1);
            if (maior > numbers[index]){    
                return maior;    
            }else{    
                return numbers[index];     
            }    
        }
    }

:thumbup: que rapidez! :thumbup:

espero que a lógica tenha ficado clara!

Ficou sim, o problema é só que recursividade ainda é um obstáculo para mim, e olha que estou lendo sobre isso há um tempo já. Mas muito obrigado pela dica.