Je suis très novice en ce qui concerne F#, et j'ai rencontré un petit problème concernant les fonctions récursives que j'espérais pouvoir comprendre.
J'ai une fonction qui est censée produire le prochain nombre pair :
let rec nextEven(x) =
let y = x + 1
if y % 2 = 0 then y
else nextEven y
// This never returns..
nextEven 3;;
J'utilise le mot-clé "rec" pour qu'il soit récursif, bien que lorsque je l'utilise, il tourne en boucle sans fin pour une raison quelconque. Si je réécris la fonction comme suit :
let nextEven(x) =
let y = x + 1
if y % 2 = 0 then y
else nextEven y
Ensuite, tout fonctionne bien (pas de mot-clé récurrent). Pour une raison quelconque, j'ai pensé que j'avais besoin de "rec" puisque la fonction est récursive (alors pourquoi pas ?) et pourquoi la première version de la fonction s'exécute-t-elle à l'infini ?
EDIT
Il s'avère que c'était une erreur de débutant. J'avais créé plusieurs définitions de la fonction en cours de route, comme l'expliquent les commentaires et les réponses.