求x的N次冪

2021-09-10 06:15:22 字數 1061 閱讀 1393

典型的減小時間複雜度的做法是記住程式已經做的事情,避免在做重複的事情,比如使用n-1個迴圈乘法就是一直在做重複的乘x。通過記住x,x2,x4,…,等資料,可以大大減小時間的複雜度。程式如下:

//包含標頭檔案

#include

#include

using

namespace std;

double

pow(

int x,

unsigned

int n)

按照遞迴程式執行,時間複雜度為o(log2n)。

在冪上做加法,相當於同底相乘,比如:

x2+2=x2*x2=x4

因此還有乙個辦法就是直接將冪轉換為二進位制數,從最後一位開始,依次代表x1, x2, x4, , ,xm的係數。若某位為0,則冪的分解中沒有該位代表的冪。例如:

3=2+1,3的二進位制表示為11,即,

x3=x2*x1,因此,使用陣列c儲存x,x2, x4, , ,然後根據二進位制選擇位上為1對應的陣列c的項進行相乘即可。

#include

#include

#include

using

namespace std;

intpowers

(int x,

int n)

for(

int i=

0;isize()

;++i)

return poly;

}//轉為二進位制的程式

bool

dtob

(int

&x, vector<

int>

&bb)

bb.push_back

(x);

reverse

(bb.

begin()

, bb.

end())

;//順序需要換一下

return

true;}

}

按照非遞迴的方法,時間複雜度為o(log2n)。

歡迎批評指正。

兩種方法求x的n次冪

分析 在求乙個數x的n次冪時,可分為偶數和奇數兩種情況來討論,若x為偶數,則x n x n 2 x n 2,若果x為奇數,則x n x n 1 2 x n 1 2 x。它的基準情況 無需遞迴即能解出 很明顯,就是n 0和n 1時,n 0時,則任何數的0次冪均為1,n 1時,任何數的1次冪均為它本身。...

快速冪求x的n次方

o logn 的時間複雜度求x的n次方,x為自然數,n為整數?如果 power 5 為奇數,result儲存當前的多餘的乙個4,並在返回結果時一併與結果相乘。2 10 2 2 2 2 2 2 2 2 2 2 4 5 4 4 4 4 4 4 4 4 4 16 2 16 2 16 16 256 如果 p...

python實現pow函式(求n次冪,求n次方)

目錄實現 pow x,n 即計算 x 的 n 次冪函式。其中n為整數。pow函式的實現 leetcode 解法1 暴力法 不是常規意義上的暴力,過程中通過動態調整底數的大小來加快求解。如下 class solution def mypow self,x float,n int float judge...