Dãy số Motzkin bắt đầu bằng 1, 1, 4, 9, v.v., Chúng ta có thể lấy số hạng thứ n tổng quát với dãy số. Dãy số Motzkin như sau.
một 0 =1
một 1 =1
một 2 =4
một 3 =9
a n =((2 * n + 1) / n + 2) * M (n-1) + ((3 * n - 3) / n + 2) * M (n - 2)
Thuật toán
-
Khởi tạo số n.
-
Lặp lại cho đến n.
-
Cập nhật hai số trước
-
-
Trả lại số cuối cùng.
Ví dụ
Thực hiện
Sau đây là cách thực hiện thuật toán trên trong C ++
#include <bits/stdc++.h> using namespace std; int getNthTerm(int n) { if(n == 0 || n == 1) { return 1; } int a = 1, b = 1; for(int i = 2; i <= n; ++i) { int c = ((2 * i + 1) * b + (3 * i - 3) * a) / (i + 2); a = b; b = c; } return b; } int main() { int n = 5; cout << getNthTerm(n) << endl; return 0; }
Đầu ra
Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.
21