Giới thiệu về đệ quy
Thuộc phần Logic và luồng chương trình trong hành trình C++ của Coddy. Bài học 45 trên 56.
Đệ quy là một kỹ thuật lập trình trong đó một hàm gọi chính nó để giải quyết vấn đề. Thay vì dùng vòng lặp, các hàm đệ quy chia vấn đề phức tạp thành những vấn đề con nhỏ hơn, tương tự nhau, cho đến khi gặp một trường hợp đơn giản có thể giải quyết trực tiếp.
Mọi hàm đệ quy đều phải có hai thành phần thiết yếu. Trường hợp cơ sở là điều kiện dừng đệ quy. Nếu thiếu điều kiện này, hàm sẽ gọi chính nó mãi mãi. Bước đệ quy là phần hàm gọi lại chính nó với các tham số đã thay đổi, mỗi lần gọi lại tiến gần hơn đến trường hợp cơ sở.
Đây là một ví dụ đếm ngược đơn giản minh họa đệ quy:
void countdown(int n) {
if (n <= 0) { // Trường hợp cơ sở: dừng khi n bằng 0
std::cout << "Done!" << std::endl;
return;
}
std::cout << n << std::endl;
countdown(n - 1); // Bước đệ quy: gọi với n-1
}Khi gọi countdown(3), hàm in ra 3, sau đó gọi countdown(2), hàm này in ra 2, rồi gọi countdown(1), cứ thế cho đến khi chạm đến trường hợp cơ sở. Mỗi lần gọi hàm chờ lần gọi tiếp theo hoàn tất rồi mới kết thúc, tạo thành một chuỗi các lần gọi cuối cùng sẽ lần lượt quay lại hàm gọi ban đầu.
Tự làm thử
Bài học này không có thử thách code.
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng chương trình
1Con trỏ và bộ nhớ
Con trỏ là gì?Toán tử lấy địa chỉToán tử giải tham chiếuCon trỏ nullCon trỏ và mảngBộ nhớ động với newGiải phóng bộ nhớ với deleteÔn tập: luyện tập về con trỏ4Ánh xạ (cặp khóa-giá trị)
Giới thiệu std::mapTạo ánh xạTruy cập và chỉnh sửa giá trịKiểm tra khóaXóa các cặpDuyệt qua ánh xạÔn tập: tần suất từ7Hàm nâng cao
Truyền tham chiếuGiới thiệu về biểu thức lambdaLambda với tham sốLambda với giá trị trả vềGiới thiệu về đệ quyGiai thừa đệ quySắp xếp bằng lambda2Vector (mảng động)
Giới thiệu std::vectorTạo vectorThêm phần tửTruy cập phần tửKích thước vectorDuyệt bằng vòng lặp forVòng lặp for dựa trên phạm viXóa phần tửÔn tập: các thao tác với vector5Dự án: Công cụ quản lý hàng tồn kho
Thiết lập dự ánThêm và cập nhật mặt hàng3Dự án: Công cụ danh sách công việc
Tổng quan dự ánThêm công việc6Tập hợp (các phần tử duy nhất)
Giới thiệu std::setTạo tập hợp và thêm phần tửKiểm tra phần tửXóa phần tửDuyệt qua tập hợpÔn tập: các số duy nhấtTự luyện tập: Trình biên dịch C++ online