斐波那契数列Java版(入门级)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/luffysk/article/details/78500350

# 斐波那契数列Java版(入门级)


1.什么是斐波那契数列

费波那西数列(Fibonacci Sequence),又译费波拿契数、斐波那契数列、费氏数列、黄金分割数列。
在数学上,费波那西数列是以递归的方法来定义:
F0 = 0
F1 = 1
Fn = Fn − 1 + Fn − 2
用文字来说,就是费波那西数列由 0 和 1 开始,之后的费波那西系数就由之前的两数相加。首几个费波那西系数是(OEIS A000045):
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946,………………


2.使用java实现斐波那契数列的两种方式

    //递归法
    public static int fab_recursion(int n) {
        if(n==0 || n==1) {
            return n;
        }else {
            return fab_recursion(n-1) + fab_recursion(n-2);
        }
    }
    //迭代法
    public static void fab_loop(int n) {
        int f = 0;
        int g = 1;
        for (int i = 0; i < n; i++) {
            System.out.println(f);
            f = f + g;
            g = f - g;
        }
    }

3.实现代码详解

3.1 递归法

每调用一次递归函数则返回传入的位置值(代码中的方法参数n)对应的斐波那契数列的值,举个例子,比如斐波那契数列为1、 1、2、3、5、8 ,则n对应的值为1, 2, 3, 4, 5, 6 假设 n = 6 则函数返回的值为8,递归的基本情况为 n = 0 或 n = 1,此时函数结束, 返回对应的n值, 当n大于或等于2时调用else中的语句开始递归。整个递归过程为一棵二叉树,叶子节点的值为1或0
n = 5 时递归函数的执行过程

此图描述了递归函数计算对应位置的斐波那契数列的值得过程,当 n = 5 时共调用了15次递归函数

3.2 迭代法

此方法中的n代表了需要计算的斐波那契数列的长度,比如当n = 6时控制台将打印出0,1,1,2,3,5 代码中f的含义代表了下次需要打印的值,开始时初始为0,g代表了需要打印的值的前一个值,初始为1,当需要打印完第二个数后由f = f + g将f更新为下一个需要打印的数,通过g = f - g将g更新为需要打印的前一个数,以3为例, (f = f + g) == (3 = 1 + 2),(g = f - g) == (2 = 3 - 1)


总结

本次对斐波那契数列的基本概念和实现做了简单总结,其中并未涉及到时间复杂度和空间复杂度的分析,斐波那契数列在生活中应用广泛,我们必须要熟记

猜你喜欢

转载自blog.csdn.net/luffysk/article/details/78500350