首页 > 解决方案 > 找到最小的平方宽度,但遇到模数为零的错误

问题描述

我编写了这样一个函数来找到一块土地的最小正方形

def find_smallest(small, big):
    if small == big:
        return small
    else:
        sub_small = big % small
        sub_big = small
        find_smallest(sub_small, sub_big)

但它报告错误为

>>> find_smallest(640, 1280)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 7, in find_smallest
  File "<stdin>", line 5, in find_smallest
ZeroDivisionError: integer division or modulo by zero

没有modulo by zero错误。

有什么问题?

标签: python

解决方案


考虑find_smallest(2,8)

在您设置的第一个循环中sub_small = big % small = 8 % 2 = 0sub_big = small = 2。然后你打电话find_smallest(0,2)

在第二个循环中,您然后尝试做sub_small = big % small = 2 % 0您不能做的事情。


推荐阅读