@feynemix

Почему при решении задачи выдаёт RuntimeError: maximum recursion depth exceeded in comparison?

Вот задача
Определите наименьшее значение суммы n+m такое, что значение F(n, m) больше числа 15 и выполняется условие n и m – натуральные числа. Запишите в ответе сначала значения n и m, при которых указанная сумма достигается, в порядке неубывания, а затем – соответствующее значение F(n, m). Числа в ответе разделяйте пробелом.

def F(n):
  print( n ) 
  if n > 0: 
    d = (n%10 + 
        F(n//10))
    print(d)
    return d
  else: 
    return 0

Вот я написал код который выдаёт ошибку
File "main.py", line 5, in F
return F(n-m, m)
File "main.py", line 2, in F
if n < m:
RuntimeError: maximum recursion depth exceeded in comparison

def F(n, m):
    if n < m:
        n,m = m,n
    if n != m:
        return F(n-m, m)
    else:
        return n
n = 0
m = 0
minn = 0
for n in range(10):
    for m in range(10):
        if(F(n, m) > 15 and n != m):
            if (n + m < minn):
                print(n, m, F(n, m))
                minn = n + m
  • Вопрос задан
  • 1649 просмотров
Решения вопроса 2
PirraToZ
@PirraToZ
Кодить не умею, дурак дураком
Всё легко и просто. Когда ты ставишь условие n != m он делает опять запрос к этой функции (т.е.) создаёт рекурсию. Максимальное количество рекурсий в Python = 997 (python3.8 995). Значит у тебя этот код запускается внутри себя 997 раз и на 998 он просто выдаёт ошибку)
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Попробуйте на бумажке посчитать по своему алгоритму значение F(0, 1).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы