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

Xác định nghề nghiệp trong gia đình đặc biệt trong C++

Gia đình bác sĩ (D) và kỹ sư (E) với quy tắc:

  • Mọi người có 2 con.
  • Con đầu của kỹ sư là kỹ sư, con thứ hai là bác sĩ.
  • Con đầu của bác sĩ là bác sĩ, con thứ hai là kỹ sư.
  • Thế hệ đầu tiên là kỹ sư.

Cho level (thế hệ) và pos (vị trí), xác định nghề. Quy tắc: Nếu vị trí lẻ → nghề cùng cha mẹ; vị trí chẵn → nghề khác cha mẹ. Đệ quy tìm nghề cha mẹ rồi áp dụng quy tắc.

Ví dụ

#include <iostream>
using namespace std;

char getProfession(int level, int pos) {
    if (level == 1) return 'E';
    if (getProfession(level - 1, (pos + 1) / 2) == 'D')
        return (pos % 2) ? 'D' : 'E';
    return (pos % 2) ? 'E' : 'D';
}

int main() {
    int level = 4, pos = 2;
    cout << "The profession is: ";
    if (getProfession(level, pos) == 'E')
        cout << "Engineer";
    else
        cout << "Doctor";
}

Kết quả

The profession is: Doctor