python - 找到最小的平方宽度,但遇到模数为零的错误
问题描述
我编写了这样一个函数来找到一块土地的最小正方形
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
错误。
有什么问题?
解决方案
考虑find_smallest(2,8)
。
在您设置的第一个循环中sub_small = big % small = 8 % 2 = 0
和sub_big = small = 2
。然后你打电话find_smallest(0,2)
。
在第二个循环中,您然后尝试做sub_small = big % small = 2 % 0
您不能做的事情。
推荐阅读
- python-3.x - 如何强制 python 导入模块依赖项的独立副本?
- javascript - 为什么模拟 axios get 方法返回未定义?
- tomcat - Tomcat,未加载 server.loader 中的 JAR
- transactions - 一个比特币全节点可以添加多少地址?
- npm - 如何在 Windows 上为 npm 设置外部代理配置
- emacs - 从 babel 的 shell 代码的结果中删除命令行提示符
- asp.net-mvc - jQuery Validate 正在使用 ASP.NET MVC 部分视图,但不适用于编辑器模板
- reactjs - 在选项卡更改时不会调用订阅内的查询?
- spring - Spring Boot - 类路径清单属性
- r - 按两组比较两个数值变量