我正在进行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
;;
答案 0 :(得分:0)
我看到的第一个问题是您对icent
的递归调用应用于列表的头部。但是列表的头部不是列表。但是icent
应该适用于列表。
列表处理函数的递归调用将应用于列表的尾部。
我还希望某些功能应用于列表的头部。否则除了递归本身之外什么都不会发生。