函數名稱:交集:取2個列表並返回出現在所有元素中的列表Ocaml:遞歸:交集
ie:[1; 2; 2; 3; 4; 4; 3] [2; 3] - > [2; 2; 3; 3]
let rec intersection (l1: int list) (l2: int list) : int list =
begin match l1, l2 with
| hd :: tl, hd2 :: tl2 -> if hd = hd2 then hd :: intersection tl l2
else intersection tl l2
| _ -> []
end
沒有與此代碼的問題,但我不知道如何解決它 - 該代碼將運行通過,並得到[2; 2],因爲它始終與l2中的第一個元素相比,但是我想讓l1也與tl2比較,有沒有人有任何建議?
Should I add another match [], [] -> to clarify base case at the beginning?
*你會怎樣寫它?你面臨什麼問題?請向我們展示您的嘗試或告訴我們您的方法。 StackOverflow可以幫助你做家庭作業,但我們不會爲你解決它。 – Bergi
有沒有更有效的方法來實現這個代碼? 每隔一個:每個第二個元素 ie:[1; 2; 3; 4; 5] - > [1; 3; 5] let rec every_other(l:int list):int list = begin match l with | [] - > [] | hd :: tl - > hd :: every_other tl end – anonymoususer
或者這個? let rec all_even(l:int list):bool =開始匹配l with | [] - > true | hd :: tl - >(hd mod 2 = 0)&& all_even tl end – anonymoususer