## 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