题目:
给定一个整数,写一个函数来判断它是否是 3 的幂次方。
示例 1:
输入: 27
输出: true
示例 2:
输入: 0
输出: false
示例 3:
输入: 9
输出: true
示例 4:
输入: 45
输出: false
进阶:
你能不使用循环或者递归来完成本题吗?
python代码1:
class Solution:
def isPowerOfThree(self, n):
if n == 0:
return False
elif n == 1:
return True
elif n % 3 == 0:
return self.isPowerOfThree(n/3)
else:
return False
python代码2
class Solution:
def isPowerOfThree(self, n):
return n > 0 and 3**19 % n == 0
心得:方法一就是一个普通的递归,但是需要的时间较长,既然题目提到有没有不用递归或者循环的方法,那么考虑int的范围,要保证,这里忽略,则,解得,取整数19即为方法二。