目录
题目:
题目接口:
题目思路:
第一点:
第二点:
第三点:
代码实现:
普通版本:
提交:
递归版本:
提交:
结语:
题目:
在ledcode刷题网站上,有这样一道题-寻找3的幂:
题目接口:
bool isPowerOfThree(int n){
}
题目思路:
第一点:
因为题目中要求输入的是整数,整数分为负整数与正整数,负整数一定不是3的幂。并且在正负两种数之间的0也不是3的幂,所以小于1的整数不是3的幂。
第二点:
1是3的0次幂,所以在n==1时返回true。
第三点:
当n大于1时,如果n是3的幂则n是3的倍数,n/3也是3的倍数,n/3*3也是3的倍数,n/3*3*3也是3的倍数……,在经过许多个n/3以后,如果n变成了1那n就是3的幂,反之就不是。
代码实现:
普通版本:
bool isPowerOfThree(int n){
if(n<1)
return false;//小于1,return false
if(n==1)
return true;//等于1,return ture
if(n%3==0){//大于1并且为3的倍数那就进入循环
int flag=1;//假设是3的幂
while(n){
n/=3;
if(n%3!=0&&n>1){//当n>1并且n除于3以后不是3的倍数
flag=0;//就不是3的幂,flag置为0
}
}
if(flag)
return true;
}
return false;
}
提交:
递归版本:
bool isPowerOfThree(int n){
if(n<1)
return false;
if(n==1)
return true;
if(n%3==0){
return isPowerOfThree( n/3);
}
return false;
}
递归算法的思路与普通版本的思路其实基本一样。
提交:
结语:
好了,小牛儿今天的分享就到这里了,如果有错误的话请多多指正。如果对你有帮助的话请给小牛儿点个赞加个关注吧,我会持续分享自己所学到的知识!!!