pow函数.
头文件:#include <math.h>
pow() 函数用来求 x 的 y 次幂(次方),其原型为: double pow(double x, double y);
看到这个题,我们首先能想到是计算量这么大的题,肯定要使用递归.
实现:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<stdlib.h>
int pow1(int x, int y)
{
if (y > 0)
{
return pow1(x, y - 1)*x;
}
else
return 1;
}
int pow2(int x, int y)
{
int result = 0;
int tmp = 0;
if (y == 0)
{
return 1;
}
tmp = pow2(x, y / 2);
//当y是偶数时
if ((y & 1) == 0)
{
result = tmp * tmp;
}
//当y是奇数时
else
{
result = x * tmp * tmp;
}
return result;
}
int main()
{
int x = 2;
int y = 10;
printf("%d ", pow1(x, y));
printf("%d ", pow2(x, y));
system("pause");
return 0;
}
比较pow1与pow2,我们不难发现pow2函数更好,根据题目特性,灵活的使用了递归.
计算sum=pow(x,y)
按照pow1的算法需要不断进行递归,每次都要重新计算累积值.
而按照pow2函数,我们将次数y 进行分类.首先不论奇偶我们都使用变量tmp存下pow(x,y/2),根据y奇偶来进行处理,倘若是偶数我们只用进行tmp*tmp即可,偶数无非tmp*tmp*x即可,简化了递归.