Toán tin vuotlen.com

Đệ quy tương hỗ (Mutual Recursion)

Dưới đây là một ví dụ về đệ quy tương hỗ (Mutual Recursion) trong C++, trong đó hàm isEven gọi hàm isOdd và ngược lại để kiểm tra số chẵn lẻ của một số nguyên dương:

#include <iostream>

// Forward declaration
bool isOdd(int n);

// Hàm kiểm tra số chẵn
bool isEven(int n) {
    if (n == 0) return true;  // 0 là số chẵn
    return isOdd(n - 1);
}

// Hàm kiểm tra số lẻ
bool isOdd(int n) {
    if (n == 0) return false; // 0 là số chẵn
    return isEven(n - 1);
}

int main() {
    int n = 5;
    std::cout << n << " is " << (isEven(n) ? "even" : "odd") << std::endl;
    return 0;
}

Trong ví dụ này, hai hàm isEvenisOdd lần lượt gọi đến nhau để kiểm tra tính chẵn lẻ của một số nguyên dương n. Hàm isEven kiểm tra xem số đó có phải là số chẵn bằng cách giảm n đi 1 và kiểm tra xem nó có là số lẻ không. Tương tự, hàm isOdd kiểm tra xem số đó có phải là số lẻ bằng cách giảm n đi 1 và kiểm tra xem nó có là số chẵn không.

Khi chương trình chạy, nó sẽ in ra thông điệp cho biết số n có phải là số chẵn hay số lẻ. Trong trường hợp này, n = 5, nên kết quả sẽ là "5 is odd".