Thì cứ viết ra giấy thử xem. Trên nguyên tắc, đệ quy dùng để thay thế các đoạn code cần vòng lặp cho các ngôn ngữ không có lòng lặp.Dạ, mong bác chia sẻ ạ. Em tìm hiểu vì sở thích, nên mấy cái này hứng thú lắm.
Đặt là hàm TIMCHUOI với tham số: (i) chuỗi cần lọc
1. Nếu len chuỗi cần lọc < 8 thì trả về ""
2. Nếu không thì nhét một dấu " " vào trước nó.
3. Kế đó là tìm chuỗi " 103" trong left chuỗi -9
3. Nếu không có kết quả thì
3. Tìm xem thằng thứ chín sau chỗ có phải là trống hoặc không có thằng thứ chín
3.1. Nếu 5 thằng kế là số thì đã tìm ra, trải chuốt và trả về kết quả.
3.2. Chưa tìm được, chạy tiếp
4. Gọi TIMCHUOI(chuỗi kể từ chỗ đã tìm kia + 4)
Nếu dùng 2 hàm thì dễ hơn một chút:
Hàm TIMCHUOI gọi hàm TIMCHUOI2 hàm thứ nhất dọn data thành mảng, hàm thứ hai duyệt mảng theo đường lối đệ quy. Tức là xét phần tử đầu, nếu đạt thì trả về kết quả, nếu không thì gọi đệ quy với mảng đã bỏ đi phần tử đầu.
TIMCHUOI(du lieu):
trả về TIMCHUOI2(TextSplit(TRIM(du lieu), " "))
TIMCHUOI2(duLieu)
IF duLieu(1) thỏa return duLieu đã chải chuốt lại
ELSE TIMCHUOI2(DROP(duLieu, 1))