我需要幫助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
我的其他帳戶由於某種原因無法再提問,但我更新了以上問題 –
請不要創建新帳戶來解決問題禁止問題。請按照您提供的鏈接中的說明進行操作,以改善您現有的問題。 –