C++程序:查找第N个偶数斐波那契数
在这个问题中,我们给定一个整数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
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP