遞迴和互遞函式
你可以使用 rec
關鍵字定義要遞迴的函式,以便它可以呼叫自身。
# let rec fact n = match n with
| 0 -> 1
| n -> n * fact (n - 1);;
val fact : int -> int = <fun>
# fact 0;;
- : int = 1
# fact 4;;
- : int = 24
你還可以使用 and
關鍵字定義相互遞迴函式,以便它們可以相互呼叫。
# let rec first x = match x with
| 1 -> 1
| x -> second (x mod 10)
and second x = first (x + 1);;
val first : int -> int = <fun>
val second : int -> int = <fun>
# first 20;;
- : int = 1
# first 12345;;
- : int = 1
請注意,第二個函式沒有 req
關鍵字。