Một thủ tục hoặc hàm có thể chứa lời gọi đến một thủ tục khác bên trong nó. Bao gồm, chương trình con có thể gọi chính nó. Trong trường hợp này, máy tính không quan tâm. Anh ấy, như mọi khi, liên tục thực hiện các mệnh lệnh mà anh ấy đã gặp từ trên xuống dưới.
Nếu bạn nhớ toán học, thì ở đó bạn có thể gặp nguyên lý quy nạp toán học. Nó như sau: một số mệnh đề đúng với mọi n tự nhiên nếu
1) nó hợp lệ cho n = 1;
2) từ tính hợp lệ của mệnh đề đối với bất kỳ n = k tự nhiên tùy ý nào, suy ra nó đúng với n = k+1.
Trong lập trình, kỹ thuật này được gọi là đệ quy.
Đệ quy là một cách xác định tập hợp đối tượng theo chính tập hợp đó, dựa trên các trường hợp cơ sở đơn giản đã cho.
Đệ quy là một thủ tục (hàm) gọi chính nó một cách trực tiếp hoặc thông qua các thủ tục và hàm khác.
Ví dụ về thủ tục đệ quy:
void Rec(int a)
{
if (a>0) { Rec(a-1);
Console.WriteLine(a);
}
Về mặt sơ đồ, công việc đệ quy có thể được biểu diễn dưới dạng lưu đồ.
Rec()
procedure được thực thi với tham số 3 Sau đó, bên trong thủ tục có tham số 3, thủ tục có tham số 2 được gọi, v.v., cho đến khi thủ tục có tham số 0 được gọi. Sau đó, điều khiển được chuyển trở lại quy trình với tham số 1, nó cũng hoàn thành công việc của mình bằng cách in số 1, v.v. trước thủ tục có tham số 3.
Tất cả các thủ tục được gọi được lưu trữ trong bộ nhớ cho đến khi chúng hoàn thành công việc của mình. Số lượng thủ tục đồng thời được gọi là độ sâu đệ quy.