7.10 Bài t p
ậ
Bài t p 1
ậ
Xét đo n mã l nh sau:
ạ
ệ
public static void
main(String[] args) {
loop(10);
}
public static void
loop(
int
n) {
int
i = n;
while
(i > 0) {
System.out.println(i);
if
(i%2 == 0) {
i = i/2;
}
else
{
i = i+1;
}
}
}
1.
Hãy k m t b ng đ ch ra giá tr c a các bi n
ẻ ộ ả
ể ỉ
ị ủ
ế i và n trong quá trình th c thi
ự
loop. B ng ch đ
c phép
ả
ỉ ượ
ch a m t c t cho m i bi n và m t hàng cho m i vòng l p.
ứ
ộ ộ
ỗ
ế
ộ
ỗ
ặ
2. K t qu c a ch
ng trình này là gì?
ế
ả ủ
ươ
Bài t p 2
ậ
Gi s b n có m t s ,
ả ử ạ
ộ ố a, và b n mu n tính căn b c hai c a nó. M t cách làm đi u này là kh i
ạ
ố
ậ
ủ
ộ
ề
ở
đ u b ng m t ph ng đoán s l
c v đáp s ,
ầ
ằ
ộ
ỏ
ơ ượ ề
ố x
0
, và r i c i thi n ph ng đoán này theo công th c sau:
ồ ả
ệ
ỏ
ứ
x
1
=(x
0
+ a/x
0
) / 2
Ch ng h n, n u ta mu n tìm căn b c hai c a 9, và b t đ u v i
ẳ
ạ
ế
ố
ậ
ủ
ắ ầ
ớ x
0
= 6, thì x
1
=(6 + 9/6) /2 = 15/4 = 3.75,
giá tr này đã sát h n. Ta có th l p l i quy trình này, dùng
ị
ơ
ể ặ ạ
x
1
đ tính ra
ể
x
2
, và c nh v y. Trong tr
ng
ứ
ư ậ
ườ
h p này,
ợ
x
2
= 3.075 và x
3
= 3.00091. Nh v y nó h i t r t nhanh v đáp s đúng (v n b ng 3).
ư ậ
ộ ụ ấ
ề
ố
ố
ằ
Hãy vi t m t ph
ng th c có tên
ế
ộ
ươ
ứ
squareRoot nh n vào tham s là m t
ậ
ố
ộ double và tr l i m t giá tr x p
ả ạ
ộ
ị ấ
x cho căn b c hai c a tham s đó, theo kĩ thu t tính nêu trên. B n không đ
c phép dùng
ỉ
ậ
ủ
ố
ậ
ạ
ượ
Math.sqrt.
V i giá tr ban đ u, b n nên l y
ớ
ị
ầ
ạ
ấ a/2. Ph ng th c b n vi t c n ph i l p l i đ n khi nó đ t đ c hai giá
ươ
ứ ạ
ế ầ
ả ặ ạ ế
ạ ượ
tr
c tính liên ti p ch sai khác nhau ch a đ n 0.0001; nói cách khác, là đ n khi giá tr tuy t đ i
ị ướ
ế
ỉ
ư
ế
ế
ị
ệ ố
c a
ủ x
n
− x
n−1
nh h n 0.0001. B n có th dùng
ỏ ơ
ạ
ể
Math.abs đ tính giá tr tuy t đ i này.
ể
ị
ệ ố
Bài t p 3
ậ
Bài t p
Ở
ậ 9 ta đã vi t m t d ng đ quy c a
ế
ộ ạ
ệ
ủ power, trong đó nh n m t bi n double có
ậ
ộ
ế
tên x cùng m t bi n nguyên
ộ
ế
n and r i tr l i
ồ ả ạ x
n
. Bây gi hãy vi t m t ph
ng th c l p đ th c hi n tính
ờ
ế
ộ
ươ
ứ ặ
ể ự
ệ
toán nh v y.
ư ậ
Bài t p 4
ậ
M c
ụ 6.8 có trình bày m t ph ng th c đ quy đ tính hàm giai th a. Hãy vi t m t d ng
ộ
ươ
ứ ệ
ể
ừ
ế
ộ ạ
tính l p cho
ặ
factorial.
Bài t p 5
ậ
M t cách đ tính
ộ
ể
e
x
là dùng khai tri n chu i vô h n
ể
ỗ
ạ
e
x
= 1 + x + x
2
/ 2! + x
3
/ 3! + x
4
/ 4! + …
N u bi n vòng l p có tên
ế
ế
ặ
i, thì s h ng th i s là
ố ạ
ứ ẽ x
i
/ i!.
1.
Hãy vi t m t ph
ng th c có tên
ế
ộ
ươ
ứ
myexp đ tính t ng c a
ể
ổ
ủ n s h ng đ u tiên trong dãy này. B n có th
ố ạ
ầ
ạ
ể
dùng ph
ng th c
ươ
ứ factorial M c
ở ụ 6.8 ho c dùng phiên b n tính l p nh bài t p tr c.
ặ
ả
ặ
ư ở
ậ
ướ
2.
B n có th khi n ph
ng th c này hi u qu h n nhi u n u nh n th y r ng m i l n l p, t s c a s
ạ
ể
ế
ươ
ứ
ệ
ả ơ
ề
ế
ậ
ấ ằ
ở ỗ ầ ặ
ử ố ủ ố
h ng thì đúng b ng t s c a s h ng li n tr
c đó nhân v i
ạ
ằ
ử ố ủ ố ạ
ề
ướ
ớ x còn m u s thì đúng b ng m u c a s
ẫ ố
ằ
ẫ ủ ố
h ng tr
c đó nhân v i
ạ
ướ
ớ i. Hãy t n d ng k t qu c a quan sát này đ tránh dùng
ậ
ụ
ế
ả ủ
ể
c
ả Math.pow l n
ẫ factorial, r i ki m tra r ng b n v n có th đ t đ c k t qu y h t.
ồ
ể
ằ
ạ
ẫ
ể ạ ượ ế
ả
ệ