题目:
斐波那契数列中的每一项被定义为前两项之和。从1和2开始,斐波那契数列的前十项为:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …
考虑斐波那契数列中数值不超过4百万的项,找出这些项中值为偶数的
项之和。
解题过程:
先构造一个求取第n个斐波拉契数的方法fn(n);fn(n)是利用递归方法构造的,即f(1)=1,f(2)=2;f(n)=f(n-1)+f(n-2),n>=3;在构造一个函数求取斐波拉契数列中偶数项的和,该方法会调用fn()方法。
程序代码:
public class EvenFibonacciNumbers {
public long fn(long n){
if(n==1) return 1;
else if(n==2) return 2;
else return fn(n-1)+fn(n-2);
}
public long sumOf(long m){
long num=0;
long sum=0;
for(long i=1;num<=m;i++)
{
num=fn(i);
if(num%2==0) sum+=num;
}
return sum;
}
public static void main(String[] args) {
EvenFibonacciNumbers summer=new EvenFibonacciNumbers();
System.out.println(summer.sumOf(4000000));
}
}