Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หาพจน์ที่ N ของอนุกรม 1, 2, 11, 12, 21, 22, 111, 112... ใน C++

หาพจน์ที่ N ของอนุกรม: 1, 2, 11, 12, 21, 22, 111, 112, ... (ประกอบด้วยเลข 1 และ 2 เท่านั้น)

ตัวอย่าง: N = 8 → 112

วิธีแก้ปัญหา (Recursive Pattern)

สังเกตรูปแบบ: แต่ละพจน์สร้างจากพจน์ก่อนหน้าคูณ 10 แล้วบวก 1 หรือ 2 สลับกัน

สูตรเวียนเกิด: - T(1) = 1, T(2) = 2 - ถ้า N คู่: T(N) = T(N/2 - 1) × 10 + 2 - ถ้า N คี่: T(N) = T(N/2) × 10 + 1

ตัวอย่างโค้ด C++

#include <iostream>
using namespace std;

int findNTerm(int N) {
    if (N == 1) return 1;
    if (N == 2) return 2;
    int value;
    if (N % 2 == 0) {
        value = findNTerm((N / 2) - 1) * 10 + 2;
    } else {
        value = findNTerm(N / 2) * 10 + 1;
    }
    return value;
}

int main() {
    int N = 12;
    cout << N << "Th term of the series is " << findNTerm(N);
    return 0;
}

Output

12Th term of the series is 212