リストを取り込み、リスト内の連続する複製要素の数を返します。例えばOcamlで連続する複製の数を数える方法
、[1;2;3;3;4;4;5]
与えられ、関数はこれが私の最初の実装ですが、残念ながら、それは常に0
を返し2
を返す必要があります。私はバグがどこにあるのかは分かりません。 改善方法についてのお手伝いがあれば幸いです。
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)
あなたが最大のどこかを取得する必要があります。あなたのカウントは時々増加しますが、新しいシーケンスに遭遇したときにはリセットされません。最後には常に0が返されます。 – Bergi
利用可能な場合は増分カウントを使用していません。先端に感謝します。私はバグを今見たことがあります – kevgathuku
ああ、私はあなたがしたいことを誤解しています、私はあなたが重複の*最長の*シーケンスを数えたかったと思った。しかし、ええ、それは小さなバグです。 – Bergi