Recursion

AP Computer Science A· difficulty 4/5

h(5,2) h(3,3) h(0,4)

Consider:

<code class="language-java">public static int h(int a, int b) { if (a <= 0) return b; if (b <= 0) return a; return h(a - b, b + 1); } </code></pre> What does <code>h(5, 2)</code> return (use the trace shown)?

  • A

    0

  • B

    4

    check_circle
  • C

    3

  • D

    5

Explanation

Trace: <code>h(5,2)</code><code>h(5-2, 2+1)</code> = <code>h(3,3)</code><code>h(3-3, 3+1)</code> = <code>h(0,4)</code>. At <code>h(0,4)</code>, <code>a <= 0</code> is true, so the function returns <code>b = 4</code>.

Want 10 more like this — adaptive to your weak spots?

Related questions