Why is this loop always executing once?
for(i = start; i < end; i++);
The accidental extra semicolon hiding at the end of the line containing the for
constitutes a null statement which is, as far as the compiler is concerned, the
loop body. The following brace-enclosed block, which you thought (and the indentation
suggests) was a loop body, is actually the next statement, and it is traversed exactly
once, regardless of the number of loop iterations.