1. Trang chủ
  2. » Tất cả

IT001 – NHẬP MÔN LẬP TRÌNH De quy

16 10 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nhập Môn Lập Trình ĐỆ QUY (RECURSION) GV BIÊN SOẠN PHẠM NGUYỄN TRƯỜNG AN 3 Nội dung Đệ quy • Một vấn đề mang tính đệ quy nếu như nó có thể được giải quyết thông qua kết quả của chính vấn đề đó nhưng v[.]

ĐỆ QUY (RECURSION) GV BIÊN SOẠN: PHẠM NGUYỄN TRƯỜNG AN Nội dung Đệ quy • Một vấn đề mang tính đệ quy giải thơng qua kết vấn đề với đầu vào đơn giản • VD: Giai thừa: Đệ quy – thuật ngữ • Recursion – Đệ quy • Recursive – Tính đệ quy Recursive problem – vấn đề đệ quy • VD Tổng S(n) số tự nhiên từ đến n Trường hợp • Trường hợp – base case – input đủ nhỏ để ta giải vấn đề mà không cần lời gọi đệ quy Đệ quy C++ • Hàm đệ quy hàm có lời gọi lại thân hàm int giai_thua(int n) { if (n == 0) return 1; else { int kq = n * giai_thua(n - 1); return kq; } } Phân loại đệ quy • Đệ quy tuyến tính - Single recursion – trường hợp đệ quy đề cập lại đến lần • Đệ quy phi tuyến - Multiple recursion – trường hợp đệ quy đề cập lại nhiều lần • Đệ quy hỗ tương – Mutual recursion – trường hợp gặp hàm không trực tiếp gọi lại mà thơng qua hàm khác Đệ quy tuyến tính • Hàm đệ quy tuyến tính có lần gọi lại int giai_thua(int n) { if (n == 0) return 1; else return n * giai_thua(n - 1); } • Ngay lời gọi đệ quy xuất nhiều lần lần chạy int uscln(int a, int b) { if (a == b) return a; else if (a > b) return uscln(a - b, b); else uscln(a, b - a); } Đệ quy tuyến tính • Đệ quy tuyến tính dễ chuyển sang vịng lặp có chức tương đương ➔ Khử đệ quy int giai_thua(int n) { if (n == 0) return 1; else return n * giai_thua(n - 1); } int giai_thua(int n) { int kq = 1; for (int i = 1; i 0) return n + tong(n - 1); else return 0; } int tong_2(int n) { int kq = 0; for (int i = 1; i

Ngày đăng: 25/02/2023, 14:52

Xem thêm:

TỪ KHÓA LIÊN QUAN

w