我需要帮助bigAdd,就像我应该为f基和arg所做的一样。大加应该取在2个INT阵列和输出总和到另一个int数组一样函数bigAdd(添加两个int列表)
# bigAdd [9;9] [1;0;0;2];;
- : int list = [1;1;0;1]
# bigAdd [9;9;9;9] [9;9;9];;
- : int list = [1;0;9;9;8]
我到目前为止
let rec padZero l1 l2 =
if List.length l1 > List.length l2 then (padZero l1 ([0]@l2))
else if List.length l2 > List.length l1 then (padZero ([0]@l1) l2)
else (l1, l2)
let rec removeZero l = match l with
|[]->
|h::t-> if h == 0 then removeZero t else l
let bigAdd l1 l2 =
let add (l1, l2) =
let f a x = failwith "to be implemented" in
let base = failwith "to be implemented" in
let args = failwith "to be implemented" in
let (_, res) = List.fold_left f base args in
res
in
removeZero (add (padZero l1 l2))
编辑:所以现在我有
let bigAdd l1 l2 =
let add (l1, l2) =
let f a x = failwith "to be implemented" in
let base = 0 in
let args = List.combine l1 l2 in
let (_, res) = List.fold_left f base args in
res
in
removeZero (add (padZero l1 l2)
我很确定这个参数是它应该是什么,但是底座可能是错误的,我不知道如何编写f。列表的附加部分究竟来自于这个骨架?我是否将列表中的每一个转换为int型,然后将它们添加并转换回int列表或直接添加它们,如果是这样,在骨架中如何以及在哪里。
有人可以向我描述f,base和args的类型是什么,它们的功能应该是什么?我很困惑。
你已经发布问题到Stackoverflow?如果是的话,最好使用同一个帐户。 – jrouquie
我的其他帐户由于某种原因无法再提问,但我更新了以上问题 –
请不要创建新帐户来解决问题禁止问题。请按照您提供的链接中的说明进行操作,以改善您现有的问题。 –