Как избавиться от RecursionError: maximum recursion depth exceeded

решаю задачу: Алгоритм вычисления значения функции F(n), где n – целое число, задан следующими соотношениями:

F(n) = n, при n ≤ 5,
F(n) = n + F(n/5 + 1), когда n > 5 и делится на 5,
F(n) = n + F(n + 6) , когда n > 5 и не делится на 5.
Назовите минимальное значение n, для которого `F(n) > 1000.`

Постоянно выдает RecursionError: maximum recursion depth exceeded Как решить подобное? Заранее спасибо

Мой код перебирает все в цикле значения n и вылетает с ошибкой

def f(n):
    if n <= 5:
        return n
    if n > 5 and n % 5 == 0:
        return n + f(n/5 + 1)
    if n > 5 and n % 5 != 0:
        return n + f(n + 6)

for n in range(1, 1000):
    if f(n) > 1000:
        print(n)
        break

Ответы (2 шт):

Автор решения: Igor

При n = 6 алгоритм зацикливается. Вы полностью привели условие задачи?

function f(n) {
  count++;
  console.log("n =", n, "step =", count);
  if (count > 20)
    return 0;

  if (n <= 5)
    return n;
  if (n > 5 && n % 5 == 0)
    return n + f(n / 5 + 1);
  if (n > 5 && n % 5 != 0)
    return n + f(n + 6);
}
var count = 0;
console.log(f(6));

→ Ссылка
Автор решения: johny

Надо было просто написать исключение для ошибки RecursionError

def f(n):
    if n <= 5:
        return n
    if n > 5 and n % 5 == 0:
        return n + f(n/5 + 1)
    if n > 5 and n % 5 != 0:
        return n + f(n + 6)

for n in range(1, 1000):
    try:
        if f(n) > 1000:
            print(n)
            break
    except RecursionError:
        print("fail")

всем спасибо за ответы!

→ Ссылка