(函數分治法)實現pow函數(x的y次方冪)


  • 題目:實現pow函數。
  • 題目分析:因為一個一個乘,循環太大,參考矩陣連乘問題:對於n=4的話,可以得出x的平方,然后平方與平方相乘。節省計算次數。對於偶數的冪,只要x的平方多次遞歸調用即可;對於奇數的冪,只要n-1,就又變成偶數的冪的形式了,無非就是多乘一個x的問題。
  • 代碼:
    class Solution {
    public:
        //分治法:分而治之
        double pow(double x, int n) {
            if (n < 0)
                return 1.0/power(x, -n);
            else
                return power(x, n);
        }
        double power(double x, int n) {
            if (n == 0)
                return 1;
            double result = 0;
            double temp = pow(x, n/2);//遞歸的處理相乘的冪,重復利用已經的出來的值。
            if (n%2 == 1)
                result = x * temp * temp;//當冪為奇數的時候,多乘一個就變為偶數問題了。
            else
                result = temp * temp;//當冪為偶數的時候,
            return result;
        }
    };

     


免責聲明!

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



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