ZeroDivisionError - Невозможно понять, что случилось - PullRequest
0 голосов
/ 13 июля 2020

Я написал следующий код и выдает ошибку «ZeroDivisionError: деление с плавающей запятой на ноль»

def squares(n, m):
  assert n>= 0 and m>= 0 and n+m > 0
  if n==0:
      c=m
  elif m==0:
      c=n
  else:
      c= squares(min(m,n), max(m,n)%min(m,n))
      
  return n*m/c*c
  
print(squares(10,6))
      

Я новичок в python и до сих пор не могу понять ошибку, пожалуйста, помогите.

Спасибо

1 Ответ

0 голосов
/ 13 июля 2020

Обратите внимание на строку в коде:

return n*m/c*c

, это вернет 0, если любое из n и m равно 0. Согласно этой строке:

c= squares(min(m,n), max(m,n)%min(m,n))

c может быть 0, в результате в строке возврата будет ZeroDivisionError.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...