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

Số Newman-Shanks-Williams (NSW) C++

Dãy NSW: a₀=1, a₁=1, aₙ = 2·aₙ₋₁ + aₙ₋₂

Dãy: 1, 1, 3, 7, 17, 41, 99, 239...

Triển khai C++

#include <bits/stdc++.h>
using namespace std;

int getNSW(int n) {
    if (n == 0 || n == 1) return 1;
    int a = 1, b = 1;
    for (int i = 2; i <= n; i++) {
        int c = 2 * b + a;
        a = b;
        b = c;
    }
    return b;
}

int main() {
    cout << getNSW(5) << endl; // 41 (n=5 -> a5=41)
    return 0;
}

Kết quả

41

Lưu ý: Code gốc loop từ i=3, trả về b khi n=5 cho 17 (a₄). Đã sửa loop từ i=2 để đúng chỉ số.