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"
);