19.09.2015 Views

Prentice.Hall.Introduction.to.Java.Programming,.Brief.Version.9th.(2014).[sharethefiles.com]

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

740 Chapter 20 Recursion<br />

fac<strong>to</strong>rial(4)<br />

Step 9: return 24<br />

Step 8: return 6<br />

Step 0: executes fac<strong>to</strong>rial(4)<br />

return 4 * fac<strong>to</strong>rial(3)<br />

Step 1: executes fac<strong>to</strong>rial(3)<br />

return 3 * fac<strong>to</strong>rial(2)<br />

Step 7: return 2<br />

Step 6: return 1<br />

Step 2: executes fac<strong>to</strong>rial(2)<br />

return 2 * fac<strong>to</strong>rial(1)<br />

Step 3: executes fac<strong>to</strong>rial(1)<br />

return 1 * fac<strong>to</strong>rial(0)<br />

Step 5: return 1<br />

return 1<br />

Step 4: executes fac<strong>to</strong>rial(0)<br />

FIGURE 20.2<br />

Invoking fac<strong>to</strong>rial(4) spawns recursive calls <strong>to</strong> fac<strong>to</strong>rial.<br />

2 Space required<br />

for fac<strong>to</strong>rial(3)<br />

n: 3<br />

1 Space required<br />

Space required<br />

for fac<strong>to</strong>rial(4) for fac<strong>to</strong>rial(4)<br />

n: 4<br />

n: 4<br />

3<br />

Space required<br />

for fac<strong>to</strong>rial(2)<br />

n: 2<br />

Space required<br />

for fac<strong>to</strong>rial(3)<br />

n: 3<br />

Space required<br />

for fac<strong>to</strong>rial(4)<br />

n: 4<br />

4<br />

Space required<br />

for fac<strong>to</strong>rial(1)<br />

n: 1<br />

Space required<br />

for fac<strong>to</strong>rial(2)<br />

n: 2<br />

Space required<br />

for fac<strong>to</strong>rial(3)<br />

n: 3<br />

Space required<br />

for fac<strong>to</strong>rial(4)<br />

n: 4<br />

5<br />

Space required<br />

for fac<strong>to</strong>rial(0)<br />

n: 0<br />

Space required<br />

for fac<strong>to</strong>rial(1)<br />

n: 1<br />

Space required<br />

for fac<strong>to</strong>rial(2)<br />

n: 2<br />

Space required<br />

for fac<strong>to</strong>rial(3)<br />

n: 3<br />

Space required<br />

for fac<strong>to</strong>rial(4)<br />

n: 4<br />

6<br />

Space required<br />

for fac<strong>to</strong>rial(1)<br />

n: 1<br />

Space required<br />

for fac<strong>to</strong>rial(2)<br />

n: 2<br />

Space required<br />

for fac<strong>to</strong>rial(3)<br />

n: 3<br />

Space required<br />

for fac<strong>to</strong>rial(4)<br />

n: 4<br />

7<br />

Space required<br />

for fac<strong>to</strong>rial(2)<br />

n: 2<br />

Space required<br />

for fac<strong>to</strong>rial(3)<br />

n: 3<br />

Space required<br />

for fac<strong>to</strong>rial(4)<br />

n: 4<br />

8 Space required<br />

for fac<strong>to</strong>rial(3)<br />

n: 3<br />

Space required<br />

for fac<strong>to</strong>rial(4)<br />

n: 4<br />

9<br />

Space required<br />

for fac<strong>to</strong>rial(4)<br />

n: 4<br />

FIGURE 20.3 When fac<strong>to</strong>rial(4) is being executed, the fac<strong>to</strong>rial method is called recursively, causing stack space<br />

<strong>to</strong> dynamically change.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!