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


A(m, n) =




n+1

nếu m = 0

A(m−1, 1)

nếu m > 0 và n = 0

A(m−1, A(m, n−1)) nếu m > 0 và n > 0.

(1)

Hãy vi t m t ph

ng th c tên là

ế

ươ

ack đ nh n tham s là hai s

ố int r i tính và tr l i giá tr c a hàm

ả ạ

ị ủ

Ackerman. Hãy ki m tra ph

ng th c v a vi t b ng cách kích ho t nó t

ươ

ứ ừ

ế ằ

ừ main r i in ra giá tr v a tr

ị ừ

l i.

C NH BÁO: giá tr đ

c tr l i s r t nhanh chóng tăng cao. B n ch nên th ch y v i các giá tr m

ị ượ

ả ạ ẽ ấ

ử ạ ớ

ị và n

nh (không l n quá 2).

Bài t p 8

1.

Hãy t o nên m t ch

ng trình có tên

ươ

Recurse.java r i gõ vào các ph

ng th c sau:

ươ

// first: trả lại kí tự đầu tiên của String cho trước

public static char

first(String s) {

return

s.charAt(0);

}

// last: trả lại một String mới có chứa toàn bộ

// chỉ trừ kí tự đầu của String cho trước

public static

String rest(String s) {

return

s.substring(1, s.length());

}

// length: trả lại chiều dài của String cho trước

public static int

length(String s) {

return

s.length();

}

2.

Hãy vi t vài câu l nh trong

ế

main đ ki m tra t ng ph

ng th c trên. Đ m b o ch c là chúng ho t đ ng

ể ể

ươ

ạ ộ

đ

c, và ch c ch n là b n đã hi u công d ng c a chúng là gì.

ượ

3.

Vi t m t ph

ng th c có tên

ế

ươ

printString đ nh n tham s là m t String đ ng th i in các ch cái trong

String đó, m i ch cái trên m t dòng. Ph

ng th c này ph i là ki u r ng.

ươ

ể ỗ

4.

Vi t m t ph

ng th c có tên

ế

ươ

printBackward có công d ng g n gi ng

ố printString ch khác là in String

theo chi u ng

c l i (m i kí t trên m t dòng riêng).

ượ ạ

5.

Vi t m t ph

ng th c có tên

ế

ươ

reverseString đ nh n tham s là m t String r i tr l i giá tr là m t String

ồ ả ạ

m i. String m i này ph i có đ y đ các ch cái nh String đã nh p làm tham s ; nh ng l i x p theo th

ư

ư

ạ ế

t ng

c l i. Ch ng h n, k t qu c a đo n mã l nh sau

ượ ạ

ế

ả ủ

String backwards = reverseString(

"Allen Downey"

);