python - 有没有更好的方法来编写这个递归函数?
问题描述
我写了一个小递归函数,用来测试 a 是否是 b 的幂。Think Python的完整练习是:
一个数 a 是 b 的幂,如果它可以被 b 整除并且 a/b 是 b 的幂。编写一个名为 is_power 的函数,它接受参数 a 和 b,如果 a 是 b 的幂,则返回 True。注意:您将不得不考虑基本情况。
def is_power(a, b):
if a == b:
return True
elif a % b == 0:
a = a/b
return is_power(a, b)
else:
return False
有没有更简洁的方法可以编写这个函数?另外,让函数以这种方式返回自己是否合适?到目前为止,我所看到的递归函数似乎并没有返回自己,而是他们只是调用自己并返回其他东西。谢谢
解决方案
你可以在一行中做到这一点:
def is_power(a,b):
return a == b or (a%b == 0 and is_power(a/b,b))
一般来说,返回True
orFalse
是对比较的响应比只返回比较本身更冗长。比较已经是布尔值。
推荐阅读
- bash - 如何在数组的每个项目上添加一个字符串?
- excel - Excel VBA 帮助 - 计算重复项并根据这些重复项填写数据
- discord - 自定义服务器前缀错误 discord.py bot
- .net - 真正微不足道的 WPF 绑定拒绝工作
- javascript - 如何将javascript添加到php中?
- python - 多尺度模板匹配与文本检测
- r - 在R中,当字符串长度可变时,如何分隔字符串的开始、中间和结尾?
- angular - 赛普拉斯无法获得 Angular 选择的选定值
- node.js - 如何使用 discord.js 执行“报告错误”命令
- unit-testing - 普罗米修斯:“for”打破了我的考验