题目:
Given an integer, write a function to determine if it is a power of three.
Follow up:
Could you do it without using any loop / recursion?(更进一步,是否能不使用循环和递归)
递归做法:
bool isPowerOfThree(int n)
{
if (n == 1) return true;
if (n == 0) return false;
if (n % 3 == 0)
{
return isPowerOfThree(n / 3);//如果是3的某次方,最终返回到n==1 true;
}
return false;
}
利用除法求n的3次方跟,如果是正整数则返回true;
bool isPowerOfThree(int n)
{
double res = log(n) / log(3);
return abs(res - rint(res))< 0.0000000001; //rint 向远离0的方向取整
}