THINK JAVA: CÁCH SUY NGHĨ NHƯ NHÀ KHOA HỌC MÁY TÍNH - Trang 37

Ph

ng th c

ươ

countdown

ng v i

n=3

quay v .

Và r i b n tr v v i

ồ ạ

ở ề ớ

main

. Nh v y, toàn b k t qu đ u ra nh sau:

ư ậ

ộ ế

ả ầ

ư

3

2

1

Bum!

Ví d th hai là hãy xem l i các ph

ng th c

ụ ứ

ươ

ứ newLine và threeLine.

public static void

newLine() {

System.out.println(

""

);

}

public static void

threeLine() {

newLine(); newLine(); newLine();

}

M c dù cách này có tác d ng, nh ng s không giúp ích đ

c nhi u trong tr

ng h p ta c n in 2, ho c

ư

ượ

ườ

106 dòng m i. M t cách làm hay h n là

ơ

public static void

nLines(

int

n) {

if

(n > 0) {

System.out.println(

""

);

nLines(n-1);

}

}

Ch

ng trình này t

ng t nh

ươ

ươ

ư countdown; khi

n

còn l n h n 0, nó s in ra m t dòng m i

ơ

ớ và sau đó s

kích ho t chính nó đ in thêm

n - 1

    dòng m i n a. Nh v y s dòng k t qu s là

ớ ữ

ư ậ ố

ế

ả ẽ

1 + (n-1)

, t c là

b ng

n

.

Khi m t ph

ng th c kích ho t chính nó, đi u này g i là

ươ

đ quy

, và nh ng ph

ng th c đó có

ươ

tính đ

quy.

4.9 Bi u đ ngăn x p cho các ph

ng th c đ quy

ế

ươ

Trong ch

ng tr

c, chúng ta đã dùng m t bi u đ ngăn x p đ bi u th tr ng thái c a m t ch

ng

ươ

ướ

ế

ể ể

ị ạ

ươ

trình trong quá trình ph

ng th c đ

c kích ho t. Lo i bi u đ này cũng ti n dùng cho vi c di n gi i

ươ

ứ ượ

m t ph

ng th c đ quy.

ươ

ứ ệ

Hãy nh r ng m i khi ph

ng th c đ

c kích ho t, Java t o ra m t “khung” m i trong đó có ch a

ơ ằ

ươ

ứ ượ

phiên b n m i c a các bi n c c b và tham s trong ph

ng th c.

ớ ủ

ế ụ ộ

ươ

Hình v này minh ho m t s đ ngăn x p cho ph

ng th c

ạ ộ ơ ồ

ế

ươ

countdown

khi g i v i

ọ ớ

n = 3

: