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;
}