AP CSA 4.17 Debugging: The Answer That Was Thrown Away

Unit 4: Data Collections · Lesson 4.17 · Debugging

The Answer That Was Thrown Away

Recursive Searching and Sorting. This is not a blank editor: it is someone else's attempt. Find what is wrong, fix it, and submit to be graded against hidden test cases.

Why debugging is its own skill

The recursive call happens. It runs, it finds the answer, and then the result is dropped on the floor because nothing returns it. Execution falls past the call to the not-found line, so a perfectly correct search reports -1 for almost everything.

What is wrong with it

  1. The two recursive calls in the search are made as bare statements, so their results are discarded and the method falls through to return -1. Return the result of each recursive call.
  2. The midpoint is computed as (low + high) / 2 + 1, which pushes it off the true middle and can step past high. Remove the adjustment.
  3. The base case and the comparison chain are otherwise correct. The array is guaranteed sorted.

The program reads

A count, then that many integers already in increasing order, then a target.

The program should print

One line: the index where the target was found, or -1 when it is absent.

Worked examples

These show what the FIXED program should print. There are more cases you cannot see, and they use different values, so patching around just these numbers will fail.

Example 1 input
7
10 20 30 40 50 60 70
20
Example 1 output
1
Example 2 input
5
1 3 5 7 9
5
Example 2 output
2

Your answer

Main.java

Input for the Run button

Run sends whatever is in the code box below, bugs and all, so you can see the crash or the wrong answer for yourself before you fix anything.


  

  

Stuck?

Hint 1

A recursive call is an expression that produces a value, exactly like any other method call. Writing it as a bare statement computes the answer and throws it away. The deeper call returned the right index to its caller, and its caller ignored it.

Hint 2

The giveaway is that the target is found only when it happens to sit at the very first midpoint. Every answer that requires one level of recursion comes back -1.

Hint 3

Adding 1 to the midpoint is not a rounding fix. (low + high) / 2 is already a valid index whenever low is at most high, and the plus one can push it past the end of the current window.

Where to go next

Get in Touch

Whether you're a student, parent, or teacher — I'd love to hear from you.

Just want free AP CS resources?

Enter your email below and check the subscribe box — no message needed. Students get daily practice questions and study tips. Teachers get curriculum resources and teaching strategies.

Typically responds within 24 hours

Message Sent!

Thanks for reaching out. I'll get back to you within 24 hours.

🏫 Welcome, fellow educator!

I offer curriculum resources, practice materials, and study guides designed for AP CS teachers. Let me know what you're looking for — whether it's classroom materials, a guest speaker, or Teachers Pay Teachers resources.

Email

[email protected]

📚

Courses

AP CSA, CSP, & Cybersecurity

Response Time

Within 24 hours

Prefer email? Reach me directly at [email protected]