函數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==0) return 1; if(y==1) return x; int ret=0; int tmp=mypow(x,y/2); if(y&1 != 0){ ret=x*tmp*tmp; } else{ ret=tmp*tmp; } return ret; }