看到这个题目第一时间想到的是通过for循环来判断一下是否能够整除3,可以的话就一直除下去,判断最后是否为1,若为1,就说明是,返回True,否则返回True.
利用递归的方式如下:
if n<=0: return False if n==1: return True if n%3!=0: return False
n//=3 return isPowerOfThree(n) #注意递归的调用方式,若是在类里面,需要加self
利用整除法的方式如下:
while n and n%3==0: n//=3 return n==1
注意最后return n==1 是一个判断,若满足则返回True,否则返回False。