NGƠN NGỮ LẬP TRÌNH Đệ quy 10/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Đệ quy Là phương pháp lập trình cho phép hàm gọi lại trực tiếp gián tiếp Một chương trình đệ quy định nghĩa đệ quy khơng thể gọi đến mãi mà phải có điểm dừng đến trường hợp đặc biệt đó, trường hợp suy biến (degenerate case) 10/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Ví dụ • Viết hàm tính n! (n giai thừa) 10/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Ví dụ • Viết hàm tính x𝑛 (x mũ n) 10/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Đệ quy Chương trình đệ quy gồm hai phần chính: Phần sở: Điều kiện thoát khỏi đệ quy (điểm dừng) Phần đệ quy: Trong phần thân chương trình có lời gọi đến thân chương trình với giá trị tham số nhỏ giá trị ban đầu 10/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Phương pháp thiết kế giải thuật đệ quy • Phân rã tốn thành tốn nhỏ • Trong có nhiệm vụ trường hợp nhỏ nhiệm vụ cha (giống hệt tốn ban đầu) • Phân tích tốn đủ nhỏ kết => điểm dừng 10/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Chú ý • Nếu khơng thiết kế điểm dừng, hàm đệ quy trở thành đệ quy vơ hạn 10/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Bài tập • Viết hàm đệ quy cho phép in chữ số số nguyên dương theo chiều xuôi, chữ số cách dấu cách (VD: cho số 57294 in 4) • Viết hàm đệ quy cho phép in chữ số số nguyên dương theo chiều ngược, chữ số cách dấu cách (VD: cho số 57294 in 5) 10/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Bài tập • Viết hàm đệ quy tính số Fibonaci thứ n theo cơng thức: – f(n) = f(n-1) + f(n-2) với n>=3 – f(n) = với n=1 n = • Viết chương trình in dãy n số Fibonaci 10/05/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN