2

割り当てのために、次のコードを再帰的に記述しました。ベクトル データ型のリストとベクトルを取り、2 つのベクトルの近さを計算します。この方法は正常に機能しますが、再帰バージョンの実行方法がわかりません。

let romulus_iter (x:vector list ) (vec:vector) = 
        let vector_close_hash = Hashtbl.create 10 in 
        let prevkey = ref 10000.0 in (* Define previous key to be a large value since we intially want to set closefactor to prev key*)
        if List.length x = 0 then
            {a=0.;b=0.}
        else
            begin
            Hashtbl.clear vector_close_hash ; 
            for i = 0 to (List.length x)-1 do
                let vecinquestion = {a=(List.nth x i).a;b=(List.nth x i).b} in
                let closefactor = vec_close vecinquestion vec in
                if(closefactor < !prevkey) then 
                    begin
                        prevkey := closefactor;
                        Hashtbl.add vector_close_hash closefactor vecinquestion
                    end
                done; 
                    Hashtbl.find vector_close_hash !prevkey
            end;;

どんな助けでも大歓迎です

4

1 に答える 1