0
我試圖編寫一個函數,它接受一個列表,並返回列表中連續重複元素的數量。如何計算Ocaml中連續重複的次數
例如,給定[1;2;3;3;4;4;5]
,函數應該返回2
這是我的初步實現,但不幸的是它總是返回0
。我不太確定錯誤在哪裏。 如何改善它的任何幫助將不勝感激。
let rec count_successive_duplicates (lst: int list) (count: int) : (int) =
match lst with
| [] | [_]-> 0
| x :: y :: tl ->
if x = y then count_successive_duplicates (y::tl) (count + 1) else count_successive_duplicates (y::tl) count
;;
let() =
print_int (count_successive_duplicates [1;2;3;3;4;4;5] 0)
你需要的地方獲得一個最大值。您的計數有時會增加,但a)在遇到新的序列時不會重置b)最終總是返回「0」 – Bergi
我發現在可用時我沒有使用增加的計數。謝謝你的提示。我已經看到了這個bug – kevgathuku
哦,我誤解了你想做的事情,我以爲你想要計算最長的*重複序列。但是,這只是一個小錯誤。 – Bergi