斐波那契数列的三种求法

来源:互联网 发布:下载办公软件office 编辑:程序博客网 时间:2024/05/24 00:33

1、动态规划

2、递归

3、迭代


public class Main {public static void main(String[] args) {long a = System.currentTimeMillis();System.out.println(f(36, new int[37]));long b = System.currentTimeMillis();System.out.println("运行时间:" + (b - a));a = System.currentTimeMillis();System.out.println(f2(36));b = System.currentTimeMillis();System.out.println("运行时间:" + (b - a));a = System.currentTimeMillis();System.out.println(f3(36));b = System.currentTimeMillis();System.out.println("运行时间:" + (b - a));}// 迭代public static int f3(int n) {if (n == 1 || n == 2) {return 1;}int first = 1, second = 1;for (int i = 3; i <= n; i++) {int temp = second + first;first = second;second = temp;}return second;}// 递归public static int f2(int n) {if (n == 1 || n == 2) {return 1;}return f2(n - 1) + f2(n - 2);}// 动态规划public static int f(int n, int[] a) {if (n == 1 || n == 2) {return 1;}if (a[n] != 0) {return a[n];}return a[n] = f(n - 1, a) + f(n - 2, a);}}


0 0