- 題目:實現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; } };