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

nh v y thì in ra m t thông báo l i r i dùng

ư ậ

ỗ ồ

return đ thoát kh i ph

ng th c. Lu ng th c thi s l p

ươ

ẽ ậ

t c tr l i ch g i ph

ng th c đó và nh ng dòng còn l i c a ph

ng th c s không đ

c th c hi n.

ở ạ

ỗ ọ

ươ

ạ ủ

ươ

ứ ẽ

ượ

Tôi đã dùng m t giá tr d u ph y đ ng bên v ph i c a đi u ki n vì v trái bi u th c này là m t bi n

ị ấ

ế

ả ủ

ế

ế

ph y đ ng.

4.7 Chuy n đ i ki u

B n có th t h i r ng làm sao ch

ng trình c a ta có th êm xuôi v i bi u th c ki u nh

ể ự ỏ ằ

ươ

ư "Gia tri log

cua x bang " + result, b i m t toán h ng là

String còn toán h ng kia là

double. Truong tr

ng h p này

ườ

Java đã thông minh đ thay ta chuy n giá tr

ị double thành String tr c khi th c hi n vi c ghép chu i.

ướ

M i khi b n th “c ng” hai bi u th c, mà m t trong s đó là

ử ộ

String, Java s chuy n đ i cái còn l i

thành String r i m i th c hi n ghép chu i. B n nghĩ đi u gì s x y ra n u th c hi n phép c ng gi a m t

ẽ ả

ế

s nguyên v i m t giá tr ph y đ ng?

4.8 Đ quy

ch

ng tr

c tôi đã nói r ng vi c m t ph

ng th c kích ho t ph

ng th c khác là h p l , và a đã xét

Ở ươ

ướ

ươ

ươ

ợ ệ

vài ví d . Tôi ch a đ c p r ng m t ph

ng th c kích ho t chính nó cũng h p l . M c dù b ngoài thì có

ư

ề ậ ằ

ươ

ợ ệ

th đi u này không rõ hay d ra sao, nh ng th c ra đó chính là m t trong nh ng đ c đi m hay nh t

ể ề

ư

trong l p trình.

Ch ng h n, hãy xét ph

ng th c sau:

ươ

public static void

countdown(

int

n) {

if

(n == 0) {

System.out.println(

"Bum!"

);

}

else

{

System.out.println(n);

countdown(n-1);

}

}

Ph

ng th c có tên là

ươ

countdown và nó nh n tham s là m t s nguyên. N u tham s

ộ ố

ế

ố b ng 0 ho c âm,

ch

ng trình s in ra ch , “Bùm!” Còn n u không, nó s in ra giá tr tham s

ươ

ế

ố và sau đó kích ho t m t

ph

ng th c có tên

ươ

countdown

—nghĩa là chính nó—nh ng truy n vào đ i s

ư

ố ố

n-1

.

Đi u gì s x y ra khi ta kích ho t m t ph

ng th c ki u nh th này?

ẽ ả

ươ

ư ế

countdown(3);

Vi c th c hi n

countdown

b t đ u v i

ắ ầ

n=3

, và do

n

l n h n 0, nó đ a ra giá tr 3, và r i g i chính nó…

ơ

ư

ồ ọ

Vi c th c hi n

countdown

b t đ u v i

ắ ầ

n=2

, và do

n

l n h n 0, nó đ a ra giá tr 2, và r i g i chính nó…

ơ

ư

ồ ọ

Vi c th c hi n

countdown

b t đ u v i

ắ ầ

n=1

, và do

n

l n h n 0, nó đ a ra giá tr 1, và r i g i chính nó…

ơ

ư

ồ ọ

Vi c th c hi n

countdown

b t đ u v i

ắ ầ

n=0

, và do

n

không còn l n h n 0, nó đ a ra dòng ch “Bùm!” và

ơ

ư

r i quay v .

Ph

ng th c

ươ

countdown

ng v i

n=1

quay v .

Ph

ng th c

ươ

countdown

ng v i

n=2

quay v .