Ваша задача такая?
Имеется последовательность чисел, зажатых ограничениями. Требуется к крайнему правому числу добавить единицу и, возможно, выполнить дополнительные преобразования для удовлетворения ограничений. Если я правильно понимаю ограничения, то
1. у каждого числа имеется определённый диапазон, из которого он не должен выходить
2. если появляется угроза выхода из диапазона, то данное число принимает минимально возможное значение, а к самому правому числу перед текущим прибавляется единица.
Вот мой код (прошу прощения, я его не проверял, поэтому за корректность не совсем ручаюсь).
## Код:
```
i := rank - 1;
WHILE indices[i] = array.GetUpperBound(i) AND i >= 0 DO
   indices[i] := array.GetLowerBound(i);
   i := i - 1
END;

overflow := i < 0;

IF ~overflow THEN
   indices[i] = indices[i] + 1
END
```


Но там прибавляется не единица.

## Код:
```
i := rank - 1;
WHILE indices[i] + rank - i > array.GetUpperBound(i) AND i >= 0 DO
   indices[i] := array.GetLowerBound(i);
   i := i - 1
END;

overflow := i < 0;

IF ~overflow THEN
   indices[i] = indices[i] + rank - i
END
```
