当a == 1时,您会忘记一个基本情况:
def isPower(a,b): if a == 1: return True if a % b != 0: return False elif isPower((a/b),b): return True else return False
但是,这还有其他问题-如果a为0,则它将永远不会结束;如果b为0,则将得到除以零。
据我所知,这是一个详细的解决方案,适用于所有整数组合:
def isPower(a,b): if a == 0 or b == 0: return False def realIsPower(a, b): if a == 1: return True elif a%b != 0: return False elif realIsPower((a/b), b): return True else: return False return realIsPower(a, b)
编辑:我的代码不适用于a和b均为负的情况。我现在正在比较它们的绝对值。
EDIT2:愚蠢的我,x ^ 0 == 1,所以a == 1应该总是返回true。这也意味着在递归之前,我不必将a与b进行比较。谢谢@哈维尔。



