Trouver la valeur maximum dans un tableau en utilisant la récursivité

Pour l'une des questions que j'ai été invité à résoudre, j'ai trouvé la valeur max d'un tableau à l'aide d'une boucle for, j'ai donc essayé de le trouver en utilisant la récursivité et c'est ce que je suis venu avec:

public static int findMax(int[] a, int head, int last) {

    int max = 0;
    if (head == last) {
        return a[head];
    } else if (a[head] < a[last]) {
        return findMax(a, head + 1, last);
    } else {
        return a[head];
    }
}

De sorte qu'il fonctionne très bien et obtient la valeur max, mais ma question est : est-il ok pour le cas de base de retour d'un[tête] et pour le cas où la valeur en tête est > la valeur à la fin?

  • Avez-vous tester cette?
  • Oui je l'ai fait, et ça fonctionne
  • ce n'est pas votre faute, mais c'est totalement idiodic pour trouver la valeur max d'un tableau via la récursivité. C'est une mauvaise utilisation de la récursivité technic.
  • En gros, je sais comment obtenir la valeur max à l'aide d'une boucle for, j'ai donc voulu essayer d'écrire le code en utilisant la récursivité
  • Cela devrait échouer pour le tableau {2,42,1} si la tête=0 et la dernière=2, la méthode retourne 2 sans recursing.
  • il retourne en fait 42 comme une valeur max..EDIT: nevermind, vous avez raison!
  • Je pense que je devrais modifier le code de la restitution de la tête aux else return findMax(un,la tête,le dernier-1)

InformationsquelleAutor Scarl | 2013-10-25