目录
题目来源
326. 3 的幂 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/power-of-three/
函数介绍
给定一个整数,写一个函数来判断它是否是 3 的幂次方。
如果是,返回 true ;否则,返回 false 。
整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x
问题示例
输入:n = 27 输出:true
输入:n = 0 输出:false
输入:n = 9 输出:true
输入:n = 45 输出:false
函数实现
bool isPowerOfThree(int n)
{
if(n==1) return true;
else if(n==0 || n/3*3!=n) return false;
return isPowerOfThree(n/3);
}
用法示例
#include<stdio.h>
#define true 1
#define false 0
int isPowerOfThree(int n)
{
if (n == 1) return true;
else if (n == 0 || n / 3 * 3 != n) return false;
else return isPowerOfThree(n / 3);
}
int main()
{
int x = 0;
scanf_s("%d", &x);
if (isPowerOfThree(x))
printf("整数%d是3的幂次方\n",x);
else printf("整数%d不是3的幂次方\n",x);
}
结果展示
函数改进
1、记录有多少次方(用count记录)
2、使底数可以改变(宏定义num)
#include<stdio.h>
#define true 1
#define false 0
#define num 3
int count = 0;
int isPowerOfThree(int n)
{
if (n == 1) return true;
else if (n == 0 || n / num * num != n) return false;
else
{
count++;
return isPowerOfThree(n / num);
}
}
int main()
{
int x = 0;
scanf_s("%d", &x);
if (isPowerOfThree(x))
printf("整数%d是%d的%d次方\n",x,num,count);
else printf("整数%d不是%d的幂次方\n",x,num);
}