Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Hàm đệ quy (recursive function) trong C với ví dụ giai thừa

Khái niệm

Hàm đệ quy gọi chính nó trong thân hàm. Cần điều kiện dừng (base case) để tránh vô tận.

Ví dụ: Tính giai thừa n!

fact(5) = 5 * fact(4)
        = 5 * 4 * fact(3)
        = 5 * 4 * 3 * fact(2)
        = 5 * 4 * 3 * 2 * fact(1)
        = 5 * 4 * 3 * 2 * 1
        = 120

Chương trình

#include <stdio.h>

int fact(int n);

int main() {
    int n, f;
    printf("Nhap so: ");
    scanf("%d", &n);
    f = fact(n);
    printf("Giai thua = %d", f);
    return 0;
}

int fact(int n) {
    if (n == 1 || n == 0)
        return 1;
    else
        return n * fact(n - 1);
}

Kết quả

Nhap so: 5
Giai thua = 120