我想执行此代码,但我有这个错误.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)
你要求一个前向声明允许相互递归.在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)