Bài giảng Nhập môn Lập trình: Chương 7 trình bày các nội dung chính sau: Đệ quy, khái niệm đệ quy, đệ quy tuyến tính, đệ quy phi tuyến, Call stack. Mời các bạn cùng tham khảo để nắm nội dung chi tiết.
ĐỆ QUY (RECURSION) Nội dung Khái niệm đệ quy Đệ quy tuyến tính Đệ quy phi tuyến Call stack Đệ 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; } } Đệ 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