Bonsoir à toutes et à tous,
Je suis devant un bout de code en Ocaml et ayant vu récemment cette notion en cours, j'ai essayé de l'appliquer mais sans succès... j'aimerais donc, si vous le permettez, comprendre cette notion avec vous.
Pourquoi cette fonction n'est donc pas récusive terminale ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 let rec mrg l1 l2 = match l1 with |[] -> l2 |h1::r1 -> begin match l2 with |[] -> l1 |h2::r2 -> if h1 <= h2 then h1::(mrg r1 l2) else h2::(mrg l1 r2) end;;
Le résultat n'est il pas en position terminale ?
Est-ce à cause de " h2::r2 -> ......" ? car on doit d'abord réaliser le test
"if h1 <= h2 " donc les 2 appels suivants sont mis en attente ?
J'suis perdu !
Merci d'avance pour le temps que vous m'accorderez.
Partager