Một số ngôn ngữ lập trình cho phép việc một module hoặc một hàm được gọi tới chính nó. Kỹ thuật này được gọi là Đệ quy (Recursion). Trong đệ quy, một hàm a có thể: gọi trực tiếp chính hàm a này hoặc gọi một hàm b mà trả về lời gọi tới hàm a ban đầu. Hàm a được gọi là hàm đệ quy.
Ví dụ của một hàm gọi chính nó:
function A(...){
if (...) return;
else A(...);
}
Ví dụ của một hàm mà gọi tới hàm khác mà trả về lời gọi tới hàm ban đầu:
function A(...){
if (...) return;
else B(...);
}
function B(...){
if (...) return;
else A(...);
}
Một hàm đệ quy có thể tiếp tục diễn ra vô số lần giống như một vòng lặp vô hạn. Để tránh điều này, bạn phải ghi nhớ hai thuộc tính sau của hàm đệ quy: