Rozpisz sobie. Dodaj sobie indeksy do zmiennych oznaczające poziom zagnieżdżenia (tutaj ich wartości są efektywnie stałe, więc można tak spokojnie zrobić).
Wtedy:
L1 = b1 - a1 + 1
k1 = ceil(L1 / 5)
a2 = a1 + 2 * k1
b2 = a1 + 3 * k1
L2 = b2 - a2 + 1 = a1 + 3 * k1 - (a1 + 2 * k1) + 1 = k1 + 1
k2 = ceil(L2 / 5)
...
L3 = k2 + 1
k3 = ceil(L3 / 5)
...
L4 = k3 + 1
k4 = ceil(L4 / 5) = ceil((k3 + 1) / 5) = ceil((ceil(L3 / 5) + 1) / 5) = ceil((ceil((k2 + 1) / 5) + 1) / 5) = ceil((ceil((ceil(L2 / 5) + 1) / 5) + 1) / 5) = ceil((ceil((ceil((k1 + 1) / 5) + 1) / 5) + 1) / 5) = ceil((ceil((ceil((ceil(L1 / 5) + 1) / 5) + 1) / 5) + 1) / 5) = ceil((ceil((ceil((ceil((b1 - a1 + 1) / 5) + 1) / 5) + 1) / 5) + 1) / 5)
Zależność jest widoczna gołym okiem i teraz spokojnie można podać wzór na n
-tą wartość L
bądź k
. Rekurencja kończy się, gdy L < 5
. Nie widzę specjalnie sensu wyznaczania dokładnych zakresów początkowych L
dla których jest osiągany dany stopień rekurencji. Z wzoru łatwo dopatrzyć się ciągu geometrycznego o współczynniku < 1
, a wyrazy takiego ciągu zbliżają się do dowolnej odległości od zera w logarytmicznej liczbie kroków.
Taka możliwość jednak jest. Możesz podejść do zadania analitycznie, albo po prostu odpalić funkcję dla różnych parametrów. Konkretne wartości dla a
i b
nie są ważne, ważna jest tylko różnica, więc możesz przyjąć, że a
jest zawsze równe 0 i wtedy badać poziom zagnieżdżenia dla różnych b
.