[Learning] [Offer to prove safety 11 interview questions: integer power values]

https://blog.csdn.net/ustcer_93lk/article/details/80369990



double powerUnsign(double num, int exp) {
    if (exp == 0) {
        return 1;
    }
    if (num == 0) {
        return 0;
    }
    if (exp == 1) {
        return num;
    }
    int expInput = exp/2;
    double result = powerUnsign(num, expInput);
    result = result*result;
    if (exp%2== 1) {
        // s如果是基数
        result = result * num;
    }
    return result;
}


double power(double num, int exp) {
    if (exp == 0) {
        return 1;
    }
    if (num == 0) {
        return 0;
    }
    if (exp == 1) {
        return num;
    }
    double expInput = exp;
    if (exp < 0) {
        // 幂先都转化为整数,方便计数 2^2 = 2*2 2^-2 = 1/2*2
        expInput = -exp;
    }
    double result = powerUnsign(num, expInput);
    if (exp < 0) {
        result = 1/result;
    }
    return result;
}


    double power1 = power(2, 2);
    double power2 = power(2, -2);

 

Published 81 original articles · won praise 68 · views 80000 +

Guess you like

Origin blog.csdn.net/li198847/article/details/104423662