博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第N个偶斐波那契数
阅读量:4097 次
发布时间:2019-05-25

本文共 1507 字,大约阅读时间需要 5 分钟。

原文地址:

已知一个n,找到第n个偶斐波那契数。

Input  : n  = 3Output : 34Input  : n  = 4Output : 144Input : n = 7Output : 10946

下面的数字序列就是斐波那契数列:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ….

对于序列中任意一个数字有:

Fn = Fn-1 + Fn-2       with seed values      F0 = 0 and F1 = 1.

偶数的斐波那契数列是:0, 2, 8, 34, 144, 610, 2584….,我们要找的是这个序列的第n个数字。

如果我们再仔细看下这个斐波那契数列,我们就可以注意到在这个序列中每隔三个数字就出现一个偶数,而且偶数的序列可以用下面的递归式子表示。

偶斐波那契数列的递归描述为:     EFn = 4EFn-1 + EFn-2with seed values     EF0 = 0 and EF1 = 2.EFn表示偶斐波那契数列的第n个项。

上面的式子是如何工作的呢?

我们先看下原来的斐波那契公式,用这样的方法写写Fn-3与Fn-6,因为事实上每三个斐波那契数就出现一个偶数。

Fn = Fn-1 + Fn-2 [Expanding both terms]   = Fn-2 + Fn-3 + Fn-3 + Fn-4    = Fn-2 + 2Fn-3 + Fn-4 [Expending first term]   = Fn-3 + Fn-4 + 2Fn-3 + Fn-4   = 3Fn-3 + 2Fn-4  [Expending one Fn-4]   = 3Fn-3 + Fn-4 + Fn-5 + Fn-6 [Combing Fn-4 and Fn-5]   = 4Fn-3 + Fn-6  因为每隔三个斐波那契数就出现一个偶数, 所以如果Fn是偶数,那么Fn-3就是偶数,Fn-6也是偶数。假设Fn是第x个偶数,并将其标记为EFx。如果Fn是EFx,那么Fn-3就是前一个偶数。例如EFx-1与Fn-6是EFx-1前面的元素。例如EFx-2所以Fn = 4Fn-3 + Fn-6也就是说EFx = 4EFx-1 + EFx-2

下面是上述递归公式的C++实现。

// Even Fibonacci Series using normal Recursion#include
using namespace std;/* Function which return nth even fibonnaci number */long int evenFib(int n){ if (n < 1) return n; if (n == 1) return 2; // calculation of Fn = 4*(Fn-1) + Fn-2 return ((4*evenFib(n-1)) + evenFib(n-2)); }/* Driver program */int main (){ int n = 7; cout << evenFib(n); return 0;}

输出:

10946

上述实现的时间复杂度是指数级的。我们可以用动态规划在线性的时间内解决这个问题,我们也可以用EFn = F3n在O(Log n)的时间内得到答案。注意我们可以在O(Log n)的时间内找到第n个斐波那契数。请看

转载地址:http://jzhii.baihongyu.com/

你可能感兴趣的文章
PHP7新特性 What will be in PHP 7/PHPNG
查看>>
比较strtr, str_replace和preg_replace三个函数的效率
查看>>
ubuntu 下编译PHP5.5.7问题:configure: error: freetype.h not found.
查看>>
PHP编译configure时常见错误 debian centos
查看>>
configure: error: Please reinstall the BZip2 distribution
查看>>
OpenCV gpu模块样例注释:video_reader.cpp
查看>>
【增强学习在无人驾驶中的应用】
查看>>
《python+opencv实践》四、图像特征提取与描述——29理解图像特征
查看>>
《python+opencv实践》四、图像特征提取与描述——30Harris 角点检测
查看>>
《python+opencv实践》四、图像特征提取与描述——31 Shi-Tomasi 角点检测& 适合于跟踪的图像特征
查看>>
OpenCV meanshift目标跟踪总结
查看>>
人工神经网络——神经元模型介绍
查看>>
人工神经网络——感知器介绍
查看>>
人工神经网络——反向传播算法(BackPropagation)
查看>>
进程的地址空间概述
查看>>
Windows 窗口底层原理
查看>>
一种函数指针的运用
查看>>
Win32程序之进程的原理
查看>>
C++虚函数原理
查看>>
MySQL的索引
查看>>