Fibonacci数列大家都了解过了吧,其公式就是F(n) = F(n-1) + F(n - 2)
那么这次我们就把他稍微修改一下,F[1] = 1 F[2] = 2 F[3] = 3 对于F(n)为F(n) = F(n-1)+F(n-2)+F(n-3) 现在我们需要得到F(n)的结果 使用分治思想来完成它吧
package com.jianning.fibonacci;
/*
* 题目描述
Fibonacci数列大家都了解过了吧,其公式就是F(n) = F(n-1) + F(n - 2)
那么这次我们就把他稍微修改一下,F[1] = 1 F[2] = 2 F[3] = 3 对于F(n)为F(n) = F(n-1)+F(n-2)+F(n-3) 现在我们需要得到F(n)的结果 使用分治思想来完成它吧!
*/
public class Fibonacci {
public static long value(int index) {//传入角标,返回F(n)
long[] arr = new long[index];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
for(int i = 3;i < index;i++) {
arr[i] = arr[i-1] + arr[i-2] + arr[i-3];
}
return arr[index-1];
}
public static long fibSUM(int index) {//传入角标,返回斐波那契数列所有值的和(附加)
long[] arr = new long[index];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
long sum = arr[0] + arr[1] +arr[2];
for(int i = 3;i < index;i++) {
arr[i] = arr[i-1] + arr[i-2] + arr[i-3];
sum = sum +arr[i];
}
return sum;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int x = 4;//范围4-30
System.out.println("斐波那契数列F("+x+")的值为:"+value(x));
System.out.println("斐波那契数列前"+x+"的和为:"+fibSUM(x));
}
}