ลำดับเฉพาะของ newman-shanks-williams มีดังต่อไปนี้
1, 1, 3, 7, 17, 41...
ถ้าเราสรุปรายการลำดับ เราจะได้
a0=1 a1=1 an=2*a(n-1)+a(n-2)
อัลกอริทึม
- เริ่มต้นหมายเลข n.
- เริ่มต้นตัวเลขแรกของลำดับที่ 1 และ 1
- เขียนลูปที่วนซ้ำจนถึง n.
- คำนวณตัวเลขถัดไปโดยใช้ตัวเลขก่อนหน้า
- อัปเดตตัวเลขสองตัวก่อนหน้า
- ส่งคืนหมายเลขสุดท้าย
การนำไปใช้
ต่อไปนี้เป็นการนำอัลกอริธึมข้างต้นไปใช้ใน 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 = 3; i <= n; ++i) { int c = 2 * b + a; a = b; b = c; } return b; } int main() { int n = 5; cout << getNthTerm(n) << endl; return 0; }
ผลลัพธ์
หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
17