Bai 08 de quy trong c++

17 0 0
Bai 08 de quy trong c++

Đ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

Bài giảng nhập môn lập trình của trường đại học công nghệ thông tin, chương 8. Bài giảng là slide powerpoint cung cấp đầy đủ kiến thức, bài tập, kỹ năng cho sinh viên về chương 8 của môn nhập môn lập trình

ĐỆ QUY (RECURSION) 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); int kq = 0; else return 0; for (int i = 1; i

Ngày đăng: 04/03/2024, 11:25

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan