Thuật toán đệ quy. 50 bài tập có thể ứng dụng thuật toán đệ quy trong lập trình

Học sinh phấn khởi học lập trình

Thuật toán đệ quy là một phương pháp giải quyết vấn đề trong lập trình và toán học bằng cách chia nhỏ vấn đề gốc thành các bài toán con có cấu trúc tương tự và giải quyết chúng bằng cách gọi lại chính thuật toán đang thực hiện. Thuật toán đệ quy thường gọi chính nó với các đầu vào nhỏ hơn và tiếp tục thực hiện cho đến khi đạt được một điều kiện dừng, sau đó nó trả về kết quả và kết hợp các kết quả con để giải quyết vấn đề gốc.

Một thuật toán đệ quy thường bao gồm hai phần chính:

  1. Trường hợp cơ bản (base case): Đây là điều kiện dừng của thuật toán. Khi thuật toán đạt đến trường hợp cơ bản, nó sẽ trả về một giá trị cố định mà không cần phải gọi lại chính nó nữa.
  2. Bước đệ quy (recursive step): Đây là phần trong thuật toán mà nó gọi lại chính nó với các đầu vào nhỏ hơn hoặc có cấu trúc tương tự để giải quyết vấn đề lớn hơn.

Dưới đây là danh sách 50 bài toán phổ biến trong lập trình mà bạn có thể giải quyết bằng thuật toán đệ quy:

  1. Tính giai thừa.
  2. Tính lũy thừa của một số.
  3. Tính tổng các số từ 1 đến n.
  4. Tìm ước chung lớn nhất (UCLN) của hai số.
  5. Tìm bội chung nhỏ nhất (BCNN) của hai số.
  6. Tìm số Fibonacci thứ n.
  7. Tìm cách chia một số n thành tổng các số nguyên dương.
  8. Tính tổng các phần tử trong một mảng.
  9. Tính tổng các số chẵn hoặc số lẻ trong một mảng.
  10. Tính tổng dãy số Fibonacci từ 1 đến n.
  11. Tính tổng các ước số của một số nguyên.
  12. Kiểm tra xem một số có phải là số nguyên tố hay không.
  13. Đảo ngược một chuỗi.
  14. Kiểm tra xem một chuỗi có là palindrome (đọc xuôi hay ngược đều giống) hay không.
  15. Tìm xem một phần tử có tồn tại trong mảng hay không.
  16. Tính tổng các số chia hết cho một số n trong một dãy số.
  17. Tìm số lớn nhất trong một mảng.
  18. Tìm số nhỏ nhất trong một mảng.
  19. Sắp xếp một mảng (QuickSort, MergeSort, …).
  20. Tính tổng các ước số nguyên tố của một số.
  21. Tính tổng các số chia hết cho 3 hoặc 5 trong một dãy số.
  22. Tính tổng các số từ a đến b.
  23. Tính tổng các phần tử trong một ma trận.
  24. Tìm đường đi trong một lưới (grid).
  25. Tìm đường đi từ một điểm đến điểm khác trong đồ thị.
  26. Tìm các hoán vị của một dãy số.
  27. Tìm tất cả các tổ hợp của n phần tử.
  28. Tính tổng các số trong tam giác Pascal.
  29. Tính tổng các dãy số dạng a + a^2 + a^3 + … + a^n.
  30. Tìm đường đi ngắn nhất trong một đồ thị (Dijkstra’s algorithm).
  31. Tính giá trị của hàm số đệ quy.
  32. Tìm số cách để đặt n quân hậu trên bàn cờ vua sao cho không có quân nào tấn công nhau (N-Queens problem).
  33. Tìm tất cả các dãy con của một mảng.
  34. Tìm đường đi tồn tại trong một mê cung.
  35. Tìm chuỗi con chung dài nhất của hai chuỗi.
  36. Tính tổng các số từ n về 1 theo cách sau: n + (n-1) + (n-2) + … + 1.
  37. Tìm dãy con liên tiếp có tổng lớn nhất trong mảng (Kadane’s algorithm).
  38. Tìm số cách để đặt các viên đá để tạo thành một dãy Fibonacci.
  39. Tìm số cách để tạo ra một tổng bằng một số tiền sử dụng các loại đồng xu.
  40. Tính tổng các số Fibonacci trong một phạm vi nhất định.
  41. Tìm chuỗi con có độ dài lớn nhất mà không có phần tử trùng nhau trong mảng.
  42. Tìm số cách để tạo ra một tổng bằng một số tiền sử dụng các loại tờ tiền.
  43. Tìm số đường đi trong một lưới khi chỉ có thể di chuyển sang phải hoặc xuống dưới (không di chuyển ngược lại).
  44. Tìm số cách để tạo ra một số nguyên bằng tổng của các số nguyên dương nhỏ hơn nó.
  45. Tìm số lớn thứ k trong một dãy số đã sắp xếp (QuickSelect algorithm).
  46. Tìm số cách để tạo ra một dãy con có tổng bằng một giá trị cụ thể trong mảng.
  47. Tìm đường đi ngắn nhất trong một đồ thị có trọng số (Floyd-Warshall algorithm).
  48. Tìm số cách để chia một số nguyên thành các tổ hợp của các số nguyên dương nhỏ hơn nó.
  49. Tìm cách sắp xếp một dãy số sao cho không có số nào lớn hơn số liền sau nó (Bubble Sort).
  50. Tìm cách sắp xếp một dãy số sao cho không có số nào nhỏ hơn số liền trước nó (Reverse Bubble Sort).

Những bài toán này đều có thể được giải quyết bằng thuật toán đệ quy để tạo ra giải pháp hiệu quả và đầy đủ.

One thought on “Thuật toán đệ quy. 50 bài tập có thể ứng dụng thuật toán đệ quy trong lập trình

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *