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

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.

ể ạ ượ ế

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.