Проблема в том, что ваш внутренний l oop будет выполняться только один раз, поэтому внешнему l oop нечего запускать после первой итерации.
Я объясню более подробно.
Вы начинаете с:
int a = i,b=i ;
Допустим, мы передали (..., 0, 2), как вы. Итак, a = 0, b = 0
.
Внешний для l oop будет работать нормально, как и ожидалось - код будет работать до a > (j+1)
, и здесь нет ничего плохого.
Проблема на самом деле со вторым для l oop:
for (;b < (j+1); b++) {
Для первой итерации это будет работать, как ожидалось. Но в любое время после этого он никогда не запустится - потому что вы уже увеличили b, так что b == (j+1)
.
Я считаю, что есть довольно простое решение, если я правильно интерпретировал ваши требования:
int a = i;
int b;
for (;a < (j+1);a++) { //This one doesnt make any difference
b = i
for (;b < (j+1); b++) {
Это работает, потому что он сбрасывает значение b перед каждой итерацией для l oop, поэтому он не останавливается немедленно.
Надеюсь, это поможет! Не стесняйтесь задавать любые вопросы в комментариях.