Questions / réponses

Fonction auxiliaire

Fonction auxiliaire

GerardinXavier -
回帖数:3

Bonjour,


Pour faire merge_sort il est indiqué d'utiliser la fonction split. Je l'ai fais sur mon ordinateur à moi et tout fonctionne mais lorsque je mets toutes les fonctions sur Moodle (split, merge, merge_sort, etc..) cela me renvoie tout simplement "test échoué"


Je m'y prends mal ou mes fonctions sont bidons ?


Merci

回复GerardinXavier

Re: Fonction auxiliaire

DuchonPhilippe -

Je pense que vous ne testez pas assez vos fonctions... il faut le faire sur des cas suffisamment variés, notamment des "petits" cas. Je crains que même votre fonction split ne soit pas correcte.

Le match dans votre fonction merge_sort ne couvre pas toutes les possibilités (et si vous l'avez définie dans un environnement Ocaml standard, vous devez avoir eu un warning qui le dit, il me semble).


回复DuchonPhilippe

Re: Fonction auxiliaire

ZeitounMarc -

Le match dans la fonction merge_sort couvre toutes les possibilités par le cas l1,l2 ->..., mais le découpage en cas est bizarre (pourquoi le cas d'arrêt est-il celui où les listes sont de longueur 1 ? que se passe-t-il si l'une des listes est vide ?).

Par ailleurs, et c'est valable pour tou.te.s, il faut tester les fonctions. Ça n'a pas dû être fait sur l'exercice :

# merge_sort [1];;

Stack overflow during evaluation (looping recursion?).

# merge_sort [1; 2; 3];;

- : int list = [1; 3]

Le fait qu'il n'y ait pas de détail dans le test provient de l'explosion de la pile.




回复ZeitounMarc

Re: Fonction auxiliaire

GerardinXavier -

Bonjour Mr,


Effectivement, le soucis venait de ma fonction split, je gérais mal la longueur de la liste et dans certain cas, je ne renvoyais tout simplement pas la bonne chose.


Merci de vos lumières ! 微笑