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

โปรแกรมหาพจน์ที่ N ของเลขฟีโบนัชชีคู่ใน C++


ในปัญหานี้ เราได้รับค่าจำนวนเต็ม N ภารกิจของเราคือ หาพจน์ที่ N ของเลขฟีโบนัชชีคู่

ชุดฟีโบนัชชีสร้างตัวเลขถัดไปโดยการบวกสองตัวเลขก่อนหน้า ชุดฟีโบนัชชีเริ่มจากสองตัวเลข - 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