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

nguyên. Sau đây là m t ph

ng th c th c hi n m t kĩ thu t (t

ng đ i) nhanh đ tính lũy th a s

ươ

ươ

ừ ố

nguyên:

public static int

pow(

int

x,

int

n) {

if

(n == 0)

return

1;

// tính x mũ n/2 bằng cách đệ quy

int

t = pow(x, n/2);

// nếu n chẵn, kết quả là t bình phương

// nếu n lẻ, kết quả là t bình phương nhân với x

if

(n%2 == 0) {

return

t*t;

}

else

{

return

t*t*x;

}

}

V n đ v i ph

ng th c này là ch nó ch ho t đ ng đ

c n u k t qu nh h n 2 t . Hãy vi t l i

ề ớ

ươ

ở ỗ

ạ ộ

ượ ế

ế

ỏ ơ

ế ạ

ph

ng th c đ k t qu là m t

ươ

ứ ể ế

ộ BigInteger. Tuy v y các tham s v n là s nguyên.

ố ẫ

B n có th dùng các ph

ng th c cho BigInteger là

ươ

add và multiply, song đ ng dùng

pow, nh v y s

ư ậ ẽ

ch ng còn gì đ làm.

Bài t p 6

N u b n thích đ h a, bây gi đúng là lúc đ c đ n Ph l c

ế

ồ ọ

ọ ế

ụ ụ A r i làm các bài t p đó.

ậ ở