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