其实C库中有实现乘方运算的函数,在math.h中的pow函数;这里不使用库函数,自己实现:
可以使用以下几种方法:
普通实现
位实现
递归实现
例子如下:
#include <stdio.h>
#include <stdlib.h>
/*
* 乘方运算,即m的n次方 (m^n)
*/
//普通实现
int power2(int m, int n)
{
int i = 1;
int result = 1;
if (n == 0)
{
return result;
}
for (i = 1; i <= n; i++)
{
result *= m;
}
return result;
}
//位实现
int power3(int m, int n)
{
int result = 1;
while (n != 0)
{
if (n & 1 == 1)
{
result *= m;
}
m *= m;
n >>= 1;
}
return result;
}
//递归实现
int power1(int m, int n)
{
/* //m^0 = 1
if (n == 0)
{
return 1;
}
//m^1 = m
if (n == 1)
{
return m;
}
*/
if(n < 2)
{
return n==0 ? 1 : m;
}
return m * power1(m, n - 1);
}
int main(void)
{
int m, n;
int result = 0;
printf("请输入底数m:");
scanf("%d",&m);
printf("请输入次数n:");
scanf("%d",&n);
result = power1(m,n);
printf("递归实现:%d的%d次方为:%d\n",m,n,result);
result = power2(m, n);
printf("普通实现:%d的%d次方为:%d\n", m, n, result);
result = power3(m, n);
printf("位实现:%d的%d次方为:%d\n", m, n, result);
system("pause");
return 0;
}
//运行结果如下: