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

return

result;

}

}

Lu ng th c hi n c a ch

ng trình này cũng gi ng v i

ệ ủ

ươ

countdown

trong M c 4.8. N u ta kích

ế

ho t

factorial

v i giá tr 3:

Vì 3 khác 0 nên ta ch n nhánh th hai và tính giai th a c a

ừ ủ

n-1

Vì 2 khác 0 nên ta ch n nhánh th hai và tính giai th a c a

ừ ủ

n-1

Vì 1 khác 0 nên ta ch n nhánh th hai và tính giai th a c a

ừ ủ

n-1

Vì 0 b ng

0 nên ta ch n nhánh th nh t và tr l i giá tr 1 và không g i đ quy thêm l n nào n a.

ả ạ

ọ ệ

Giá tr đ

c tr v , 1, đ

c nhân v i

ị ượ

ả ề

ượ

n, v n b ng 1, và k t qu đ c tr l i.

ế

ả ượ

ả ạ

Giá tr đ

c tr v (1) đ

c nhân v i

ị ượ

ả ề

ượ

n, v n b ng 2, và k t qu đ c tr l i.

ế

ả ượ

ả ạ

Giá tr đ

c tr v (2) đ

c nhân v i

ị ượ

ả ề

ượ

n, v n b ng 3, và k t qu , 6 tr thành giá tr tr v c a hàm ng

ế

ị ả ề ủ

v i lúc b t đ u g i đ quy.

ắ ầ

ọ ệ

Sau đây là n i dung c a bi u đ ngăn x p khi m t lo t các ph

ng th c đ

c kích ho t:

ế

ươ

ứ ượ

Các giá tr tr l i nh đây đ

c chuy n v ngăn x p.

ị ả ạ

ư ở

ượ

ế

L u ý r ng khung cu i cùng, các bi n đ a ph

ng

ư

ế

ươ

recurse

result

đ u không t n t i, vì

ồ ạ

khi n=0, nhánh t o ra chúng không đ

c th c hi n.

ượ

6.9 Ni m tin

Vi c dõi theo lu ng th c hi n c a ch

ng trình là m t cách đ c mã l nh, nh ng b n s nhanh chóng l c

ệ ủ

ươ

ư

ạ ẽ

vào mê cung. M t cách làm khác mà tôi g i là “ni m tin” nh sau. Khi b n dò đ n ch kích ho t ph

ng

ư

ế

ươ

th c, thay vì vi c đi theo lu ng th c hi n, hãy

coi nh

ư là ph ng th c đó ho t đ ng t t và tr l i k t qu

ươ

ạ ộ

ả ạ ế

đúng.
Th t ra, b n đã t ng có “ni m tin” này khi dùng các ph

ng th c c a Java. M i l n kích

ươ

ứ ủ

ỗ ầ

ho t

Math.cos

hay

System.out.println

, b n không ki m tra n i dung bên trong các ph

ng th c

ươ

này. B n ch vi c gi s r ng chúng ho t đ ng đ

c.

ỉ ệ

ả ử ằ

ạ ộ

ượ

Cũng v i lý l t

ng t khi b n kích ho t các ph

ng th c do mình vi t nên. Ch ng h n, trong M c 6.7,

ẽ ươ

ươ

ế

chúng ta đã vi t m t hàm tên là

ế

isSingleDigit

đ xác đ nh xem m t s có n m trong kho ng t 0 đ n

ộ ố

ế

9 hay không. M t khi chúng ta t thuy t ph c r ng ph

ng th c này đã vi t đúng—b ng cách ki m tra

ế

ụ ằ

ươ

ế