Hướng dẫn lập trình C trên Linux Phần 18: Các hàm đệ quy

theanh

Administrator
Nhân viên
Bất kể bạn sử dụng ngôn ngữ lập trình nào, khi bạn bắt đầu viết mã ngày càng nhiều, bạn sẽ học được các khái niệm giúp mã của bạn rõ ràng và dễ đọc/hiểu. Có một số khái niệm như vậy trong C. Một trong số đó là 'hàm đệ quy', mà chúng ta sẽ thảo luận ở đây trong bài viết này.

Hàm đệ quy là hàm gọi chính nó. Có thể gọi trực tiếp từ bên trong thân hàm hoặc gián tiếp từ bên trong một số hàm khác được hàm đang xét gọi.

Sau đây là một ví dụ về đệ quy trực tiếp:
Mã:
int func (int a)
{
 //statements

 func(a-1);

 // statements

 return 0;
}
Và đây là một ví dụ về đệ quy gián tiếp:
Mã:
int func (int a)
{
 //statements

 func_new(a);

 // statements

 return 0;
}

int func_new(int b)
{
 //statements

 func(b-1);

 //statementsur

 return 0;
}
Như đã đề cập ở phần đầu, đệ quy giúp bạn đạt được mã nhỏ gọn, không chỉ dễ viết mà còn dễ hiểu và dễ xem lại. Chúng ta hãy lấy một ví dụ để làm rõ hơn lợi thế này.

Tôi chắc rằng tất cả các bạn đều đã nghe về khái niệm giai thừa. Đối với những ai chưa biết, giai thừa là kết quả bạn nhận được khi nhân một số nguyên với tất cả các số nguyên dương nhỏ hơn nó. Ví dụ, giai thừa của 5 là 5x4x3x2x1, bằng 120.

Sau đây là một mã đơn giản để tìm giai thừa của một số:
Mã:
#include 

int main()
{
 int a = 0, i = 0, fact = 1;
 printf("Nhập một số: ");

 scanf("%d", &a);
 
 for(i=1; i
 
Back
Bên trên