Exercise
Consider method mystery
.
public static void mystery(int x)
{
if(x >= 0)
{
mystery(x - 1);
System.out.println(x);
}
}
Which of the following describes the sequence of integers output? (Ignore line breaks.)
(A) x, x - 1, x - 2 ... 1
(B) x, x - 1, x - 2 ... 1, 0
(C) x - 1, x - 2 ... 1, 0
(D) 0, 1 ... x - 1, x
(E) 1, 2 ... x - 1, x
Solution
(D) 0, 1 ... x - 1, x
Explanation
Infinite recursion is not an answer choice, so it does not need to be considered.
The print
statement is after the recursive call. It prints the original value of x
. Whatever the recursive call does, the very last value that will be printed is the original value of x
. This eliminates all of the answer choices except (D) and (E).
Answer choice (D) includes 0
. Answer choice (E) does not. When the method is called with 0
, the condition x >= 0
evaluates to true
. The method prints 0
. The answer is (D).
Additional notes
The base case is x < 0
, the opposite of the condition in the method. Base cases must be resolved without a recursive call. It is common for base cases to be written as conditional statements at the top of a recursive method; however, this is not required.
Help & comments
Get help from AP CS Tutor Brandon Horn