python - python编程错误RecursionError:比较超过最大递归深度
问题描述
这是我的python程序,也是我提出的练习6.4答案。
#!/usr/bin/env python3
"""
Exercise 6.4.
A number, a, is a power of b if it is divisible by b and a/b is a power of b.
Write a function called is_power that takes parameters a and b and returns
True if a is a power of b.
Note: you will have to think about the base case.
"""
def is_power(a, b):
"""Checks if a is power of b."""
if a == b:
return True
elif a%b == 0:
return is_power(a/b, b)
else:
return False
print("is_power(10, 2) returns: ", is_power(10, 2))
print("is_power(27, 3) returns: ", is_power(27, 3))
print("is_power(1, 1) returns: ", is_power(1, 1))
print("is_power(10, 1) returns: ", is_power(10, 1))
print("is_power(3, 3) returns: ", is_power(3, 3))
每当我一次又一次地尝试显示此错误时,我都会收到此错误。请指导我程序中的错误在哪里。
is_power(10, 2) returns: False
is_power(27, 3) returns: True
is_power(1, 1) returns: True
Traceback (most recent call last):
File "C:\Users\Aaban Shakeel\Desktop\Think-Python-2e---my-solutions-master\ex6\ex6.4.py", line 23, in <module>
print("is_power(10, 1) returns: ", is_power(10, 1))
File "C:\Users\Aaban Shakeel\Desktop\Think-Python-2e---my-solutions-master\ex6\ex6.4.py", line 16, in is_power
return is_power(a/b, b)
File "C:\Users\Aaban Shakeel\Desktop\Think-Python-2e---my-solutions-master\ex6\ex6.4.py", line 16, in is_power
return is_power(a/b, b)
File "C:\Users\Aaban Shakeel\Desktop\Think-Python-2e---my-solutions-master\ex6\ex6.4.py", line 16, in is_power
return is_power(a/b, b)
[Previous line repeated 1021 more times]
File "C:\Users\Aaban Shakeel\Desktop\Think-Python-2e---my-solutions-master\ex6\ex6.4.py", line 13, in is_power
if a == b:
RecursionError: maximum recursion depth exceeded in comparison
解决方案
这是因为对于b
=1,您的递归将永远不会结束 - 我会添加:
def is_power(a, b):
"""Checks if a is power of b."""
if a == b:
return True
elif b==1:
return False
elif a%b == 0:
return is_power(a/b, b)
else:
return False
推荐阅读
- python - 无法使用 graphviz 渲染决策树
- kubernetes - kubectl 突然询问用户名
- python - `set_index()` 不排序索引?
- amazon-web-services - 修复“用户:匿名无权执行”
- node.js - 通过代理将客户端标头、isp、geo 转发到服务器
- python - for循环中的Python过滤器函数
- javascript - JavaScript 对象自动排序
- flutter - 如何在 Dart Flutter 中使日期选择器“确定”和“取消”按钮文本变黑?
- python - Django:将 HTML(包含表单)解析为字典
- python - 如果网站默认只显示项目 1-50,则网页抓取