简体   繁体   中英

How to calculate time complexity of the following algorithm

How to calculate time complexity of the following algorithm. I tried but I am getting confused because recursive calls.

power (real x, positive integer n)
//comment : This algorithm returns xn, taking x and n as input
{
    if n=1 then
    return x;
    y = power(x, |n/2|)
    if n id odd then
    return y*y*x //comment : returning the product of y2 and x
    else
    return y * y //comment : returning y2
}

can some one explain in simple steps.

To figure out the time complexity of a recursive function you need to calculate the number of recursive calls that is going to be made in terms of some input variable N .

In this case, each call makes at most one recursive invocation. The number of invocations is on the order of O(log 2 N), because each invocation decreases N in half.

The rest of the body of the recursive function is O(1), because it does not depend on N . Therefore, your function has time complexity of O(log 2 N).

Each call is considered a constant time operation, and how many times will it recurse is equal to how many times can you do n/2 before n = 1, which is at most log 2 ( n ) times. Therefore the worst case running time is O(log 2 n ).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM