Đệ quy, một khái niệm quen thuộc trong lập trình, luôn mang đến sức hút khó cưỡng. Bạn đã bao giờ tự hỏi Đệ quy là gì không? Đặc biệt trong ngôn ngữ lập trình C/C++, việc sử dụng hàm đệ quy đem lại hiệu quả như thế nào chưa? LaGiNhi.com sẽ cung cấp chi tiết nhất về Đệ quy và cách áp dụng nó trong lập trình C/C++. Tận hưởng hành trình khám phá đầy bất ngờ cùng chúng tôi để khám phá vẻ đẹp của Đệ quy và sức mạnh mà nó mang lại.

Đệ quy là khái niệm gì?

Theo các / tài liệu, Đệ quy (Recursion) được mô tả như việc xác định một vật thể dựa trên chính nó hoặc loại của nó. Trong lập trình, Đệ quy biểu thị việc một hàm gọi chính nó trong quá trình thực thi.

Ví dụ về đệ quy
Ảnh minh họa

Ví dụ, giả sử bạn đặt hai chiếc gương hoàn toàn giống nhau và đặt chúng đối diện nhau (gương A và gương B). Khi nhìn vào gương A, bạn sẽ thấy hình ảnh phản chiếu của gương B, với kích thước nhỏ hơn so với gương thật.

Đọc thêm:  Fructozơ là gì? Công thức cấu tạo, Tính chất và Ứng dụng của Fructozơ

Tuy nhiên, trên bề mặt của gương B, hình ảnh của gương A lại được phản chiếu trở lại. Điều này dẫn đến việc khi mặt của gương B phản chiếu trong gương A, bạn có thể thấy hình ảnh của gương A trong hình ảnh của gương B (và kích thước của hình ảnh A sẽ nhỏ hơn hình ảnh B).

Quá trình này tiếp tục lặp đi lặp lại một cách vô hạn hoặc cho đến khi mắt người không còn nhìn thấy được nữa. Hiện tượng này được gọi là ảnh trong ảnh.

Một ví dụ khác về đệ quy
Một ví dụ về đệ quy khác

Ưu và nhược điểm của hàm đệ quy

  • Ưu điểm: Giúp đơn giản hóa hàm phức tạp bằng cách giải quyết từng phần nhỏ.
  • Nhược điểm: Thời gian thực hiện công việc không hiệu quả do cần giải quyết nhiều vấn đề hơn. Đôi khi dẫn đến tốn bộ nhớ khi phải chia nhỏ quá nhiều lần.

Phân loại đệ quy

Đệ quy trực tiếp được sử dụng khi một hàm tự gọi lại chính nó.

Đệ quy gián tiếp ám chỉ việc một hàm A gọi một hàm B, và hàm B lại gọi lại hàm A.

Đệ quy trong C++
Đệ quy trong ngôn ngữ lập trình C++

Thành phần của thuật toán đệ quy

  • Điều kiện cơ sở: Điều kiện để dừng đệ quy.
  • Phần đệ quy (Cú pháp): Phần thân của hàm chứa lời gọi đệ quy.

Thuật toán đệ quy, một phần quan trọng trong lập trình, gồm hai yếu tố chính: điều kiện để kết thúc đệ quy và phần thân của hàm chứa lời gọi đệ quy. Điều kiện cơ sở quy định khi nào thuật toán sẽ dừng việc đệ quy, tránh việc rơi vào vòng lặp vô hạn. Phần đệ quy, còn được biết đến là phần thân, bao gồm các bước cần thiết để thực hiện lời gọi đệ quy, giúp giải quyết vấn đề một cách hiệu quả. Để triển khai thuật toán đệ quy thành công, việc xác định rõ ràng cả hai thành phần này là không thể phủ nhận.

Đọc thêm:  Serial Number là gì? Cách xem Serial Number trên điện thoại, máy tính

Giải Thuật Đệ Quy Trong C++

Giải Thuật:

Tên_Hàm_Kết_Quả(Danh_Sách_Tham_Số)

{

Nếu (Điều_Kiện_Dừng_Thỏa)

trả về giá_trị;

ngược lại

trả về Tên_Hàm(Danh_Sách_Đối_Số) phép_toán Tên_Đối_Số;

}

Lưu Ý:

  • Thường thì các hàm có kiểu trả về khác void mới áp dụng đệ quy (trừ trường hợp đặc biệt).
  • Trong trường hợp này, cần có điều_kiện_dừng_thỏa để kết thúc đệ quy.
  • phép_toán ở đây có thể là bất kỳ phép toán nào phù hợp với yêu cầu của bài toán.
Ví Dụ
Ví Dụ

Ví dụ 1

Đề: Tính tổng các số chia hết cho 5 nằm trong đoạn [0,N] với N là một số bất kỳ.

Input và Output ví dụ 1
Input và Output ví dụ 1

Phân tích đề: Do các số nằm trong đoạn [0, N] nên bạn có thể bắt đầu từ 0 và tăng dần đến N và ngược lại. Do các số chia hết cho 5 nên bạn có thể bắt đầu chọn 0 và tăng số đó lên 5 đơn vị miễn sao số được cộng phải bé hơn hoặc bằng N. Hoặc bạn có thể bắt đầu từ số chia hết cho 5 gần N nhất sau đó giảm dần đi 5 đơn vị cho đến khi về 0. Đây là đệ quy trực tiếp.

Bài giải: Ví dụ 1 đệ quy

Bài giải ví dụ đệ quy 1
Bài giải ví dụ đệ quy 1

Đệ quy trong lập trình và ứng dụng của nó trong C/C++

Đệ quy là một khái niệm quen thuộc đối với lập trình viên. Nhưng đệ quy là gì? Làm thế nào để viết thuật toán đệ quy trong C/C++? Bài viết này sẽ giúp bạn hiểu rõ hơn về đệ quy và cách áp dụng nó trong ngôn ngữ lập trình C/C++.

Đọc thêm:  Trái Đất hình gì? 20 sự thật về Trái Đất chúng ta cần biết

Đệ quy là gì?

Theo định nghĩa từ Wikipedia, Đệ quy (Recursion) là sự định nghĩa một vật thể dựa trên chính nó hoặc loại của nó. Đệ quy là quá trình lặp đi lặp lại của một vật thể, một sự kiện nào đó.

Ví dụ, khi bạn đặt hai chiếc gương giống nhau đối diện nhau, gương A và gương B, mỗi chiếc gương sẽ phản chiếu hình ảnh của chiếc gương kia. Quá trình này có thể lặp đi lặp lại vô hạn, tạo ra hiện tượng “ảnh trong ảnh”.

Đệ quy trong C++

Khái niệm hàm đệ quy trong lập trình là sử dụng hàm gọi lại chính nó. Khi một hàm có thể gọi lại chính nó dựa trên dữ liệu đã khai báo trước đó, đó được gọi là đệ quy.

Ưu điểm và nhược điểm của hàm đệ quy

Ưu điểm của hàm đệ quy là giúp giải quyết các vấn đề phức tạp bằng cách chia nhỏ chúng thành các bài toán nhỏ hơn. Tuy nhiên, hàm đệ quy có thể tốn thời gian và bộ nhớ nếu quá trình lặp quá nhiều lần.

Phân loại đệ quy

  • Đệ quy trực tiếp: Sử dụng một hàm gọi lại chính nó.
  • Đệ quy gián tiếp: Sử dụng hàm X gọi đến hàm Y, trong khi hàm Y lại chứa lời gọi đến hàm X.

Thuật toán đệ quy C++

Thành phần của một thuật toán đệ quy bao gồm điều kiện cơ sở và phần đệ quy thân hàm. Điều kiện cơ sở là điều kiện để kết thúc đệ quy, trong khi phần đệ quy là phần thực hiện lời gọi đệ quy.

Ví dụ minh họa

  • Ví dụ 1: Tính tổng các số chia hết cho 5 trong đoạn từ 0 đến N.
  • Ví dụ 2: In ra n phần tử đầu tiên của dãy Fibonacci.

Hy vọng bài viết này giúp bạn hiểu rõ hơn về đệ quy và cách áp dụng nó trong lập trình C/C++. Hãy thực hành và áp dụng kiến thức để trở thành một lập trình viên giỏi.