C++程序 查找斐波那契数列偶数项之和
给定一个正整数N,任务是找到F2 + F4 + F6 + …… + F2n的值,其中Fi表示第i个斐波那契数。
斐波那契数列是以下整数序列中的数字。
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ……
示例:
输入: n = 5
输出: 88
N = 5,因此将生成从零项到第十项的斐波那契数列:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55
在偶数项处的元素之和=0 + 1 + 3 + 8 + 21 + 55
输入: n = 8
输出: 1596
0 + 1 + 3 + 8 + 21 + 55 + 144 + 377 + 987 = 1596
方法-1: 此方法通过直接找到所有斐波那契数,然后只从偶数索引中加总。但它需要O(n)的时间复杂度。
下面是以上方法的实施:
输出:
时间复杂度: O(N).
辅助空间: O(N).
方法-2:
可以清楚地看到,可以这样得到所需求的和:
2 ( F 2 + F 4 + F 6 +………+ F 2n ) = (F 1 + F 2 + F 3 + F 4 +………+ F 2n ) – (F 1 – F 2 + F 3 – F 4 +………+ F 2n )
现在可以将公式中的 n 替换为 2n 以得到第一项。
因此 F 1 + F 2 + F 3 + F 4 +………+ F 2n = F 2n+2 – 1。
如果将公式中的 n 替换为 2n,则可以找到第二项。
因此,F 1 – F 2 + F 3 – F 4 +………- F 2n = 1 + (-1) 2n+1 F 2n-1 = 1 – F 2n-1 。
因此,2 ( F 2 + F 4 + F 6 +………+ F 2n )
= F 2n+2 – 1 – 1 + F 2n-1
= F 2n+2 + F 2n-1 – 2
= F 2n + F 2n+1 + F 2n+1 – F 2n – 2
= 2 ( F 2n+1 -1)
因此,( F 2 + F 4 + F 6