HÀM ĐỆ QUY LÀ GÌ

  -  

Đây là 1 quyển sách toán lớp 3, ở trong bìa sách có bố học sinh, trong các số đó có một học sinh lại thế một cuốn sách toán lớp cha khác. Cùng trong quyển sách này lại có ba học sinh, và cũng có một học sinh cầm một quyển sách lớp 3. Đây đó là ví dụ cho 1 khái niệm hết sức căn bạn dạng trong bất kỳ ngôn ngữ lập trình như thế nào - tư tưởng "đệ quy".

Bạn đang xem: Hàm đệ quy là gì

*

Đệ quy là gì ?

Đệ quy có nghĩa là một hàm tự điện thoại tư vấn lại chính nó.

Ví dụ:

void hello(int count){ count++; if (count

Thành phần của một hàm đệ quy.

Một hàm đệ quy gồm 2 phần:

Phần cơ sở: Điều khiếu nại để thoát ra khỏi đệ quy. Nếu như như không tồn tại phần này, hàm đệ quy sẽ tiến hành mãi mãi tạo ra tràn bộ lưu trữ Stack.Phần đệ quy: Thân hàm gồm chứa phần call đệ quy, thực hiện cho tới khi vừa lòng điều kiện tại đoạn cơ sở.

Ví dụ:

void hello(int count){ count++; if (count Như lấy một ví dụ trên, nếu chúng ta không setup điều kiện dừng thì công tác sẽ chạy mãi mãi.

*

Bộ lưu giữ Stack.

Nguyên tắc vận động của bộ lưu trữ Stack là LIFO (Last in - First out hay còn gọi là vào sau - ra trước ). Khi một biến được khai báo trong hàm, nó sẽ tiến hành đẩy vào Stack, khi hàm đó hoàn thành thì tất cả những biến chuyển đó sẽ được đẩy ra, giải tỏa khỏi Stack. Hình bên dưới là minh họa cách hoạt động của bộ nhớ lưu trữ Stack.

*

Ưu điểm:

Thuận lợi mang lại việc màn trình diễn bài toán, như làm việc ví dụ trên, nhìn vào hàm là chúng ta cũng có thể thấy ngay lập tức nó màn trình diễn dãy số fibonacci, hay tính giai thừa.

Xem thêm: ' Bưu Thiếp Là Gì - Từ Điển Tiếng Việt Bưu Thiếp

Nhược điểm:

Tốn nhiều cỗ nhớ, còn nếu như không phần cửa hàng ( điểm dừng) thì sẽ tạo ra việc tràn bộ nhớ stack. Hình như việc thực hiện đệ quy tốn nhiều thời hạn hơn vòng lặp.

Các ví dụ.

Tính tổng các số từ 1 đến n.

#include int sum(int n) if(n == 0) // điều kiện dừng (phần cơ sở) return 0; return n + sum(n-1); int main() int sum = sum(5); printf("Sum = %d", sum);Kết quả.

*


phân tích và lý giải hàm đệ quy
với n = 5

#include int fibonacci(int n)int main() printf("%d", fibonacci(30));Kết quả.

*

Tính giai thừa

#include int factorial(int n) if (n == 1) return 1; else return factorial(n-1)*n;int main() printf("%d", factorial(5));Kết quả.

*

Tạm kết

Đệ quy là một phương pháp cơ bản trong nghệ thuật lập trình. Trong lập trình sẵn Web xuất xắc Winform thường xuyên thì không sử dụng đệ quy nhưng buộc phải học nghệ thuật này, vì nó không thực sự khó để thay bắt. Việc sử dụng đệ quy vào các bài toán thì nên cần cân nhắc, mặc dù đệ quy khiến cho code chúng ta dễ đọc, nhưng lại rất khó khăn cho câu hỏi debug.

Xem thêm: Áo Khoác Tiếng Anh Là Gì

Trên đó là khái niệm về đệ quy, mong muốn giúp ích cho mọi fan mới tò mò về chuyên môn này, trường hợp có câu hỏi hay góp ý gì thì hãy phản hồi ở bên dưới nhé. Chúc mọi fan học tốt.