题目描述
Fibonacci数列求和
0, 1, 1, 2, 3, 5, 8, 13
规律:前两位分别是0、1,后面每一位是前面两位的和。
代码块
package com.yue.season1.class01;import com.yue.util.TimeUtil;/*** Fibonacci数列求和* 0, 1, 1, 2, 3, 5, 8, 13* 规律:前两位分别是0、1,后面每一位是前面两位的和。*/public class Fibonacci {public static long basicFibonacci(int num) {if (num <= 1) {return num;}return basicFibonacci(num - 1) + basicFibonacci(num - 2);}public static long improvedFibonacci(int num) {if (num <= 1) {return num;}long first = 0;long second = 1;long sum = num;for (int i = 0; i < num - 1; i ++) {sum = first + second;first = second;second = sum;}return sum;}public static void main(String[] args) {int num = 40;TimeUtil.check("basicFibonacci", new TimeUtil.Task() {@Overridepublic void execute() {System.out.println(basicFibonacci(num));}});TimeUtil.check("improvedFibonacci", new TimeUtil.Task() {@Overridepublic void execute() {System.out.println(improvedFibonacci(num));}});}}
运行结果
[basicFibonacci] 开始:2021-07-08T00:22:10.007873600 102334155 结束:2021-07-08T00:22:10.915445500
耗时:0.896秒
[improvedFibonacci] 开始:2021-07-08T00:22:10.923448900 102334155 结束:2021-07-08T00:22:10.923448900
耗时:0.0秒
