In: Computer Science
Problem 3:
(a) Implement a sublinear running time complexity recursive function in Java public static long exponentiation(long x, int n) to calculate x^n.
Note: In your function you can use only the basic arithmetic operators (+, -, *, %, and /).
(b) What is the running time complexity of your function? Justify.
(c) Give a number of multiplications used by your function to calculate x^63.
Important Notes:
• For the item (a):
o You must add the main method in your program in order to test your implementation.
o You can assume that there are no data errors that need to be checked as all the data will be assumed correct.
o Your function you can use only the basic arithmetic operators (+, -, *, %, and /).
o Your program MUST be submitted only in source code form (.java file).
o Remember that a program that does not compile or does not run loses all correctness points.
SOURCE CODE:
*Please follow the comments to better understand the code.
**Please look at the Screenshot below and use this code to copy-paste.
***The code in the below screenshot is neatly indented for better understanding.
public class Exponentiation
{
    public static long exponentiation(long x, int n)
    {
        // Base cases here
            if (n == 0)
                return 1;
            if (n == 1)
                return x ;
            // recursive function
            long temp = exponentiation(x, n / 2);
            temp = (temp* temp);
            // if exponent is even value
            if (n % 2 == 0)
                return temp;
            else // if exponent is odd value
                return x*temp;
    }
    // test the method
    public static void main(String[] args)
    {
        System.out.println("3^4 is :"+exponentiation(3,4));
        System.out.println("2^10 is :"+exponentiation(2,10));
        System.out.println("10^3 is :"+exponentiation(10,3));
        System.out.println("123^3 is :"+exponentiation(123,3));
    }
}
======================

OUTPUT


