Похоже, ваше терминальное состояние L <= 1
- это то, что сбивает вас с толку.
Вы, вероятно, хотели изменить это и сказать L >= 1
. В противном случае, когда L инициализируется 3, а затем терминал оценивается, он немедленно возвращает false, говоря, что L больше 1, и, следовательно, завершает ваш цикл.