使用相互递归

Jul*_*uza 0 recursion ocaml

我想执行此代码,但我有这个错误.OCaml中是否存在相互递归?

错误:未绑定值quicksort您的意思是tquicksort?

我的问题:

let rec tquicksort lm l lM = 
    match l with
        | [] -> unirL(unir (rev lm) lM)
        | lx::lxs -> let (la, lb) = part lx lxs in
                    if nroelem la < nroelem lb then 
                        tquicksort (quicksort (la::lm)) lb lM
                    else 
                        tquicksort lm la (quicksort (lb::lM));;
let quicksort l = tquicksort [] l [];;
Run Code Online (Sandbox Code Playgroud)

Jef*_*eld 5

你要求一个前向声明允许相互递归.在OCaml中使用这种方法的方法是let rec ... and ....

例如:

 let rec g x = if x < 2 then x else f x
 and f x = g (x - 1)
Run Code Online (Sandbox Code Playgroud)