pow(x,y)函数的用法及实现算法
2015-07-11 18:15
351 查看
pow函数是求次方的函数,
函数原型是double pow(double a,double b);
使用时应包含math.h头文件。
1,C/C++中的数学函数编辑
原型:在TC2.0中原型为extern float pow(float x, float y); ,而在VC6.0中原型为double pow( double x, double y );
头文件:math.h/cmath(C++中)
功能:计算x的y次幂。
返回值:x不能为负数且y为小数,或者x为0且y小于等于0,返回幂指数的结果。
返回类型:double型,int,float会给与警告!
2,pow函数的重载编辑
C++提供以下几种pow函数的重载形式:
double pow(double X,int Y);
float pow(float X,float Y);
float pow(float X,int Y);
long double pow(long double X,long double Y);
long double pow(long double X,int Y);
使用的时候应合理设置参数类型,避免有多个“pow”实例与参数列表相匹配的情况。
其中较容易发生重载的是使用形如:
int X,Y;
int num=pow(X,Y);
这是一个比较常用的函数,但是编译器会提醒有多个“pow”实例与参数列表相匹配。
可以使用强制类型转换解决这个问题:num=pow((float)X,Y);
函数pow(x,y)实现运算x^y,即x的y次方,这里x和y都为整数。
算法的基本思想是,减少乘法次数,重复利用结算结果,例如:
x^4,如果逐个相乘的话,需要四次乘法。如果我们这样分解(x^2)*(x^2)就只需要2两次乘法,因为x^2的结果我们可以重复利用。所以我们最好做对称的分解指数y,然后求x^(y/2)的平方。
具体算法如下:
1 如果y为偶数,直接计算mypow(x, y/2)*mypow(x, y/2);
2 如果y为奇数,则y-1为偶数,回到了第一种情况。
int mypow(int x, int y)
{
if (y == 1) return x;
int result = 0;
int tmp = mypow(x, y/2);
if(y&1 != 0) //奇数
{
result = x * tmp * tmp;
}
else
{
result = tmp * tmp;
}
return result;
}
函数原型是double pow(double a,double b);
使用时应包含math.h头文件。
1,C/C++中的数学函数编辑
原型:在TC2.0中原型为extern float pow(float x, float y); ,而在VC6.0中原型为double pow( double x, double y );
头文件:math.h/cmath(C++中)
功能:计算x的y次幂。
返回值:x不能为负数且y为小数,或者x为0且y小于等于0,返回幂指数的结果。
返回类型:double型,int,float会给与警告!
2,pow函数的重载编辑
C++提供以下几种pow函数的重载形式:
double pow(double X,int Y);
float pow(float X,float Y);
float pow(float X,int Y);
long double pow(long double X,long double Y);
long double pow(long double X,int Y);
使用的时候应合理设置参数类型,避免有多个“pow”实例与参数列表相匹配的情况。
其中较容易发生重载的是使用形如:
int X,Y;
int num=pow(X,Y);
这是一个比较常用的函数,但是编译器会提醒有多个“pow”实例与参数列表相匹配。
可以使用强制类型转换解决这个问题:num=pow((float)X,Y);
函数pow(x,y)实现运算x^y,即x的y次方,这里x和y都为整数。
算法的基本思想是,减少乘法次数,重复利用结算结果,例如:
x^4,如果逐个相乘的话,需要四次乘法。如果我们这样分解(x^2)*(x^2)就只需要2两次乘法,因为x^2的结果我们可以重复利用。所以我们最好做对称的分解指数y,然后求x^(y/2)的平方。
具体算法如下:
1 如果y为偶数,直接计算mypow(x, y/2)*mypow(x, y/2);
2 如果y为奇数,则y-1为偶数,回到了第一种情况。
int mypow(int x, int y)
{
if (y == 1) return x;
int result = 0;
int tmp = mypow(x, y/2);
if(y&1 != 0) //奇数
{
result = x * tmp * tmp;
}
else
{
result = tmp * tmp;
}
return result;
}
相关文章推荐
- 与Math.pow 相反的函数使用介绍
- JavaScript中的pow()方法使用详解
- Leetcode练习- Pow(x,n)
- Pow(x, n)
- 【剑指Offer面试编程题】题目1514:数值的整数次方---九度OJ
- 【剑指Offer面试编程题】题目1515:打印1到最大的N位数--九度OJ
- leetcode:Pow(x, n)
- 指数函数的另外一种实现
- leetcode_question_50 Pow(x, n)
- uva 107 - The Cat in the Hat
- 53-棋盘放麦子问题
- LeetCode | Pow(x, n)
- Pow(x, n)
- c编程应注意到的细节问题
- Oracle常用函数系列之四:数值函数(2)
- 【算法】自己实现x的n次幂(pow函数)
- PoW挖矿算法原理及其在比特币、以太坊中的实现 推荐
- Leet Code 50 Pow(x, n) - 实现幂运算 - Java
- 区块链核心技术——共识算法
- Oracle常用函数系列之四:数值函数(2)