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

โปรแกรมหา Nth Even Fibonacci Number ใน C++


ในปัญหานี้ เราได้รับค่าจำนวนเต็ม 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