Toán tin vuotlen.com

Đệ quy lồng (Nested Recursion)

Một ví dụ cho đệ quy lồng (Nested Recursion) là tính một hàm Ackermann, một hàm nổi tiếng trong lý thuyết tính toán:

#include <iostream>

int ackermann(int m, int n) {
    if (m == 0) {
        return n + 1;
    } else if (m > 0 && n == 0) {
        return ackermann(m - 1, 1);
    } else {
        return ackermann(m - 1, ackermann(m, n - 1));
    }
}

int main() {
    int m = 2, n = 3;
    std::cout << "Ackermann(" << m << ", " << n << ") = " << ackermann(m, n) << std::endl;
    return 0;
}

 

Đệ quy lồng: Hàm ackermann có lời gọi đệ quy lồng bên trong một lời gọi đệ quy khác. Điều này tạo ra một sự lồng nhau giữa các lời gọi đệ quy.

Kết luận