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)); } }