a == b && b == c && c == d && ... may be written recursively like so:


int allequal(const int *ptr, size_t n)
{
return n <= 1 ? 1 : ptr[0] == ptr[1] && allequal(ptr + 1, n - 1);
}
...