C++實(shí)現(xiàn)任意次方的高效方法

c++
小樊
88
2024-07-25 16:32:13

下面是一個(gè)使用分治法來(lái)實(shí)現(xiàn)任意次方的高效C++代碼示例:

#include <iostream>

double power(double x, int n) {
    if (n == 0) {
        return 1.0;
    }
    
    double half = power(x, n / 2);
    
    if (n % 2 == 0) {
        return half * half;
    } else {
        return x * half * half;
    }
}

int main() {
    double x = 2.0;
    int n = 10;
    
    double result = power(x, n);
    
    std::cout << x << " raised to the power of " << n << " is: " << result << std::endl;
    
    return 0;
}

在這個(gè)示例中,我們定義了一個(gè)名為power的函數(shù),它接受一個(gè)double類(lèi)型的底數(shù)x和一個(gè)int類(lèi)型的指數(shù)n作為參數(shù),并返回xn次方的結(jié)果。在函數(shù)內(nèi)部,我們使用分治法來(lái)計(jì)算任意次方,將指數(shù)n分解為兩個(gè)部分,并遞歸計(jì)算子問(wèn)題的解,然后根據(jù)指數(shù)n的奇偶性來(lái)決定如何將子問(wèn)題的解合并起來(lái)。這種方法的時(shí)間復(fù)雜度為O(logn),是一種高效的計(jì)算任意次方的方法。

0