Các
hàm có thể gọi chính nó. Điều này có thể có ích với một số tác vụ như là một số
phương pháp sắp xếp hay tính giai thừa của một số. Ví dụ, để tính giai thừa của
một số (n), công thức toán học của nó như sau:
n! = n * (n-1) * (n-2) * (n-3)
... * 1
và
một hàm đệ qui để tính toán sẽ như sau:
// factorial calculator #include <iostream.h> long factorial (long a) { if (a > 1) return (a * factorial (a-1)); else return (1); } int main () { long l; cout << "Type a number: "; cin >> l; cout << "!" << l << " = " << factorial (l); return 0; } |
Type a number: 9
!9 = 362880 |
Hàm này có một hạn chế là kiểu dữ liệu mà nó dùng (long) không cho phép tính giai thừa quá 12!.