欢迎访问宙启技术站
智能推送

使用Java实现斐波那契数列的函数

发布时间:2023-06-19 03:21:11

斐波那契数列是指:{1,1,2,3,5,8,13,21,34,55,...},即前两项为1,后面每一项均为前两项之和。在计算机程序中,斐波那契数列的求解是一个经典的问题,而且有多种实现方式。本文将介绍使用Java实现斐波那契数列的函数。

方法一:递归实现

递归实现是最简单的一种方法,代码也很容易理解。但是递归实现有一个缺点,就是会重复计算很多已经计算出来的值,效率比较低。

1.实现代码如下:

public static int fibonacci(int n){

    if(n == 1 || n == 2){

        return 1;

    }

    return fibonacci(n-1) + fibonacci(n-2);

}

2.测试代码如下:

public static void main(String[] args){

    for(int i=1; i<=10; i++){

        System.out.print(fibonacci(i) + " ");

    }

}

3.测试结果如下:

1 1 2 3 5 8 13 21 34 55

方法二:循环实现

循环实现是比较高效的一种方法,因为它不会重复计算已经计算出来的值。

1.实现代码如下:

public static int fibonacci(int n){

    if(n == 1 || n == 2){

        return 1;

    }

    int a = 1;

    int b = 1;

    int result = 0;

    for(int i=3; i<=n; i++){

        result = a + b;

        a = b;

        b = result;

    }

    return result;

}

2.测试代码同样如下:

public static void main(String[] args){

    for(int i=1; i<=10; i++){

        System.out.print(fibonacci(i) + " ");

    }

}

3.测试结果同样如下:

1 1 2 3 5 8 13 21 34 55

方法三:数组实现

数组实现是利用一个数组来保存已经计算出来的值,避免重复计算,与循环实现类似。

1.实现代码如下:

public static int fibonacci(int n){

    if(n == 1 || n == 2){

        return 1;

    }

    int[] fi = new int[n];

    fi[0] = 1;

    fi[1] = 1;

    for(int i=2; i<n; i++){

        fi[i] = fi[i-1] + fi[i-2];

    }

    return fi[n-1];

}

2.测试代码同样如下:

public static void main(String[] args){

    for(int i=1; i<=10; i++){

        System.out.print(fibonacci(i) + " ");

    }

}

3.测试结果也是一样的:

1 1 2 3 5 8 13 21 34 55

综上,使用Java实现斐波那契数列的函数有三种方法,分别是递归实现、循环实现和数组实现。至于哪种方法更好,要看具体情况而定。如果要求简单、易读,可以选择递归实现;如果要求高效,可以选择循环实现或数组实现。