Давайте посмотрим на это логически ...
У нас есть четыре дела ...
odd -> odd eg. 1 -> 3 answer: 1
odd -> even eg. 1 -> 4 answer: 2
even -> odd eg. 0 -> 3 answer: 2
even -> even eg. 0 -> 4 answer: 3
Первые три случая могут быть обработаны просто как ...
(1 + last - first) / 2
Четвертый случай не так уж хорошо вписывается в это, но мы можем немного обдумать его довольно легко ...
answer = (1 + last - first) / 2;
if (both first and last are even)
answer++;
Надеюсь, это поможет.