現在のノードの値が次のノードの値と等しいことを再帰関数がチェックし、1ずつインクリメントするようにします。それ以外の場合は、リストの最後までインクリメントして先に進みません。したがって、1、2、2、3、1、1のリストの場合、2、2は隣接する複製であり、1、1は隣接する別の複製であるため、2を返す必要があります。
現在の値が次の値と等しくない場合の誤ったケースの処理方法がわかりません。基本的に、インクリメントしません。
これはこれまでの私のコードです...
int fn(Node l) {
if (l == null)
return 0;
else
return (l.value == l.next.value) ? (1 + fn(l.next)) : ;
}