遞迴之求冪

2021-07-11 19:36:20 字數 556 閱讀 3504

剛開始學習用遞迴實現x的n次方時,其思想(或者遞推式)一般如下:

x^n = x * x^n-1(n > 0);

x^n = 1(n = 0);

c語言**如下:

//__int64為有符號8位元組整數

__int64 power(int x, int n)

return x * power(x, n -1);

} 這種簡單的求冪演算法的時間複雜度為o(n);

下面介紹速度更快的二分求冪演算法,其思想(或者遞推式)如下:

x^n = x^n/2 * x^n/2(當n為偶數時,即n%2 = 0時);

x^n = x^n/2 * x^n/2 * x(當n為奇數時,即n%2 = 1時);

c語言**如下:

__int64 power(int x, int n)

res = power(x, n / 2);

res *= res;

if(n % 2 == 1)

return res;

} 二分求冪演算法的時間複雜度為:o(logn)

求冪的遞迴和非遞迴實現

遞迴版本的實現 long long int pow1 int x,unsigned int n if n 0x01 else return pow x x,n 1 遞迴 的基準條件是 n 0 此時返回1 不呼叫自身 若n是偶數,則x的n次方等於 x x的n 2次方。若n是奇數,則x的n次方等於 x ...

常規求冪 二分求冪 快速位求冪

題目描述 給定數字a,b,求a b。思路 解法包括常規求冪 二分求冪 快速求冪 位運算 每一種求法中,要根據b的值進行討論,b 0,0,0。1 常規求冪 常規求冪即是根據ans a a a a。根據b的個數來就行求解 2 二分求冪 二分求冪是可以將乘法進行分組 比如a a a a a a a a a...

常規求冪 二分求冪 快速位求冪

我是因為刷杭電的題目了解到了冪運算,那就貼一下杭電的題目好了 然後在貼一下別人關於冪運算的部落格 題目描述 給定數字a,b,求a b。思路 解法包括常規求冪 二分求冪 快速求冪 位運算 每一種求法中,要根據b的值進行討論,b 0,0,0。1 常規求冪 常規求冪即是根據ans aaa a。根據b的個數...