OCaml:无法弄清楚此代码段中的错误

时间:2015-03-06 18:07:45

标签: ocaml

我正在进行OCaml任务并且有点卡住了。目前这就是我所拥有的:

let rec icent (image) =
 match image with
 | [] -> 0.0
 | imgHead::imgTail -> (centImCol(image, 1)) +. (icent(imgHead))
;;

let rec jcent (image) =
 match image with
 | [] -> 0.0
 | imgHead::imgTail -> (centImRow(imgHead, 1)) +. (jcent(imgTail))
;;

正确定义centIm*个函数。所需的签名是int list list -> float。目前,我只是在错误后实现错误,并不能完全理解为什么。任何帮助将不胜感激。

let rec centImRow(image, start_j) =
  match image with
    | imgHead::imgTail -> (sumRowCount(imgHead, start_j)) + (centImRow(imgTail, start_j+1))
    | _ -> 0
    ;;

let rec centImCol(image, start_i) =
  match image with
    | imgHead::imgTail -> (sumRowCount(imgHead, start_i)) + (centImCol(imgTail, start_i+1))
    | _ -> 0
    ;;

1 个答案:

答案 0 :(得分:0)

我看到的第一个问题是您对icent的递归调用应用于列表的头部。但是列表的头部不是列表。但是icent应该适用于列表。

列表处理函数的递归调用将应用于列表的尾部。

我还希望某些功能应用于列表的头部。否则除了递归本身之外什么都不会发生。