Это потому, что i++
обычно выполняется после конца блока for, и в вашей функции конец блока for никогда не будет достигнут, потому что в блоке вы безоговорочно возвращаете значение.
A-петля
for (A; B; C) {
D;
}
внутренне переведено на следующее:
A;
while (B) {
D;
C;
}
Вы можете видеть, что если D
всегда возвращается из функции, C
никогда не будет достигнуто. Вот о чем жалоба.