Tail-rekursive Funktion zu finden, die Tiefe des Baums in Ocaml

Habe ich eine Art tree wie folgt definiert

type 'a tree = Leaf of 'a | Node of 'a * 'a tree * 'a tree ;;

Habe ich eine Funktion zu finden, die Tiefe des Baumes wie folgt

let rec depth = function 
    | Leaf x -> 0
    | Node(_,left,right) -> 1 + (max (depth left) (depth right))
;;

Diese Funktion ist nicht tail-rekursiv. Gibt es eine Möglichkeit für mich, dies zu schreiben-Funktion in tail-rekursive Weise?

  • Ich glaube, Sie können, wenn Sie transformieren auf eine continuation-passing style.
InformationsquelleAutor ppaul74 | 2012-02-17
Schreibe einen Kommentar