Задать вопрос
@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
  • Вопрос задан
  • 1736 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
PirraToZ
@PirraToZ
Кодить не умею, дурак дураком
Всё легко и просто. Когда ты ставишь условие n != m он делает опять запрос к этой функции (т.е.) создаёт рекурсию. Максимальное количество рекурсий в Python = 997 (python3.8 995). Значит у тебя этот код запускается внутри себя 997 раз и на 998 он просто выдаёт ошибку)
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Попробуйте на бумажке посчитать по своему алгоритму значение F(0, 1).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
Greenway Global Новосибирск
от 150 000 ₽
SPA2099 Москва
До 100 000 ₽
HR Prime Москва
от 300 000 до 3 800 000 ₽