We recursively divide n by 3. If we reach 1, it's a power of three. If we reach a number not divisible by 3 (and not 1), it's not.
- If
n <= 0, return False. - If
n == 1, return True. - If
n % 3 != 0, return False. - Recursive step: Return
is_power_of_three(n // 3).
- Time Complexity: O(log3 N).
- Space Complexity: O(log3 N).
def is_power_of_three(n):
if n <= 0: return False
if n == 1: return True
return n % 3 == 0 and is_power_of_three(n // 3)