ในปัญหานี้ เราได้รับค่าจำนวนเต็ม N หน้าที่ของเราคือ ค้นหา Nth เลขคู่ Fibonacci .
Fibonacci Series สร้างตัวเลขที่ตามมาด้วยการบวกตัวเลขก่อนหน้าสองตัว อนุกรมฟีโบนักชีเริ่มต้นจากตัวเลขสองตัว - F0 &F1 ค่าเริ่มต้นของ F0 &F1 สามารถรับได้ 0, 1 หรือ 1, 1 ตามลำดับ
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
Input : N = 4 Output : 144
แนวทางการแก้ปัญหา
วิธีแก้ปัญหาอย่างง่ายคือการใช้ข้อเท็จจริงที่ว่าทุก ๆ ตัวเลขที่สามในลำดับฟีโบนักชีเป็นคู่ และลำดับของจำนวนคู่ก็เป็นไปตามสูตรแบบเรียกซ้ำด้วย
สูตรแบบเรียกซ้ำสำหรับลำดับฟีโบนักชีคู่คือ −
Ef(n)=4Ef(n-1) + Ef(n-2) โดยที่ Ef(0)=0 และ Ef(1)=2เอ็ม>
เรารู้ว่าทุก ๆ เลขฟีโบนักชีที่สามเป็นคู่ ดังนั้น f(n-3) และ f(n-6) ทั้งคู่จึงเป็นคู่ ดังนั้น เราจะถือว่า f(n) เป็นองค์ประกอบที่ k และแสดงเป็น Ef(k) ถ้า f(n) คือ Ef(k) ดังนั้น f(n-3) คือจำนวนคู่ก่อนหน้าซึ่งแสดงโดย Ef(k-1) ดังนั้น f(n-6) จึงเป็นจำนวนก่อนหน้าของ Ef(k-1) ที่ คือ Ef(k-2)
ดังนั้น f(n)=4f(n-3)+f(n-6)
หรือ Ef(k)=4Ef(k-1) + Ef(k-2)
ตัวอย่าง
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
#include<iostream> using namespace std; int findNthEvenFiboNum(int n){ if (n < 1) return n; if (n == 1) return 2; return ((4 * findNthEvenFiboNum(n-1)) + findNthEvenFiboNum(n- 2)); } int main (){ int n = 5; cout<<n<<"th even fibonacci number is "<<findNthEvenFiboNum(n); return 0; }
ผลลัพธ์
5th even fibonacci number is 610