gZpg77
-
Modifié le 1 oct. 2020 à 17:44
Whismeril
Messages postés18417Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 5 juin 2023
-
2 oct. 2020 à 10:49
Bonjour,
J'ai un Dm à rendre et j'ai un problème sur l'exercice suivant:
Ecrire la methode qui Recherche l'indice du maximum d'un tableau de manière récursive
Si le tableau est null ou de longueur 0 retourner -1
voici le commentaire de mon prof (Au cours de la récursivité, tu as un maximum temporaire que tu es obligé de conserver au fil des appels pour comparer chacune des valeurs au max en cours, le modifier si besoin avant de le retourner).
je pense que c'est uniquement la parti du 4ième if qui est fausse mais je sais pas quoi mettre, ça fait plusieurs jours que j'essaie de comprendre.
voici mon code:
static int MaximumRecursif(int[] t, int cpt=0, int resul=0)
{
// TO COMPLETE
if (t.Length==0)
{
return -1;
}
if (cpt<t.Length-1) // Si le compteur est inférieur à la longeur du tableau
{
if (resul<t[cpt]) // si le nombre comparé est supérieur au maximum temporaire
{
return MaximumRecursif(t,cpt+1, t[cpt]);
}
}
if (resul>t[cpt]) //si le nombre comparé est inférieur au maximum temporaire
{
return MaximumRecursif(t,cpt+1, t[cpt]);
}
return cpt;
}
Merci de votre aide.
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ICI
Whismeril
Messages postés18417Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 5 juin 2023624 1 oct. 2020 à 23:21
Déjà, merci de faire l'effort d'utiliser la coloration syntaxique, pour que ton code soit lisible.
Buno t'as mis un lien en corrigeant ton premier message, c'est un petit tuto sur la marche à suivre.
Ensuite, tu ne peux pas savoir à l'avance quand le maximum est atteint
Supposons 3 tableaux
int[] t1 = { 7, 2, 8, 3, 9, 4, 10, 5 }; // le maximum est l'avant dernier
int[] t2 = { 11, 2, 8, 3, 9, 4, 10, 5 }; // le maximum est le premier
int[] t3 = { 7, 2, 8, 3, 9, 4, 10, 12 }; // le maximum est le dernier
Pour le savoir, il faut avoir parcouru le tableau entier.
Ton algorithme doit donc parcourir le tableau entier et ensuite retourner la position du maximum
gZpg77
Messages postés2Date d'inscriptionjeudi 1 octobre 2020StatutMembreDernière intervention 2 octobre 2020 Modifié le 2 oct. 2020 à 00:16
mais c'est justement ça le problème j'arrive pas à voir comment on fait...
ça fait depuis cet après midi, que je bloque dessus.
On doit coder sur schooding uniquement la méthode.
c'est le message de ma prof, lorsque je lui ai dit que je ne voyais pas comment on peut trouver le max sans parcourir entièrement le tableau: Au cours de la récursivité, tu as un maximum temporaire que tu es obligé de conserver au fil des appels pour comparer chacune des valeurs au max en cours, le modifier si besoin avant de le retourner
merci j'ai essayé de le corrigé mais ça marche toujours pas, je ne sais pas comment arrêter le programme lorsque le maximum est atteint.
il faudrait peut être mettre que si resul est inférieur à la valeur courante, on enregistre sa position et si une autre valeur courante est supérieur à resul alors elle devient resul ?
//
if(t[cpt]<resul) // si la valeur courante est inférieur à resul
{
if (resul<t[cpt+1]) // si resul est inférieur à la valeur courante suivante.
{
resul=t[cpt+1];
return MaximumRecursif(t,cpt+1, resul);
}
}
}
//
Modifié le 2 oct. 2020 à 00:16
ça fait depuis cet après midi, que je bloque dessus.
On doit coder sur schooding uniquement la méthode.
c'est le message de ma prof, lorsque je lui ai dit que je ne voyais pas comment on peut trouver le max sans parcourir entièrement le tableau: Au cours de la récursivité, tu as un maximum temporaire que tu es obligé de conserver au fil des appels pour comparer chacune des valeurs au max en cours, le modifier si besoin avant de le retourner