pow(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==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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM