Answer:
The power function can be written as a recursive function (using Java) as follows:
- static int power(int x, int n)
- {
- if(n == 0){
- return 1;
- }
- else {
- return power(x, n-1 ) * x;
- }
- }
Explanation:
A recursive function is a function that call itself during run time.
Based on the question, we know x to the 0th power is 1. Hence, we can just create a condition if n = 0, return 1 (Line 3 - 5).
Next, we implement the logic "x to the nth power can be obtained by multiplying x to the n-1'th power with x " from the question with the code: return power(x, n-1 ) * x in the else block. (Line 6 -8)
In Line 7, power() function will call itself recursively by passing x and n-1 as arguments. Please note the value of n will be reduced by one for every round of recursive call. This recursive call will stop when n = 0.
Just imagine if we call the function as follows:
int result = power(2, 3);
What happen will be as follows:
- run Line 7 -> return power(2, 2) * 2
- run Line 7 -> return power(2, 1) * 2
- run Line 7 -> return power(1, 0) * 2
- run Line 4 -> return 1 (Recursive call stop here)
Next, the return value from the inner most recursive call will be return to the previous call stack:
- power(1, 0) * 2 -> 1 * 2
- power(2, 1) * 2 -> 1 * 2 * 2
- power(2, 2) * 2 -> 1 * 2 * 2 * 2 - > 8 (final output)
Answer:
The program displays 5 4 3 2 1 and then raises an Array Index Out Of Bounds Exception.
Explanation:
A sample of code output is attached.
The code snippet contain xMethod that takes an array and array length as argument.
In the given snippet, the array {1, 2, 3, 4, 5} and length (5) is passed as argument to the method.
First the method display the element of the array in reverse order
System.out.print(" " + x[length - 1]);
and then the method call itself again. This displays
5 from x[4]
4 from x[3]
3 from x[2]
2 from x[1]
1 from x[0]
but after displaying 1, when it tries to call the method again, an array index out of bound exception is thrown because it will try accessing an element from the array when it is already exhausted.