斐波那契数列的两种实现方式

1、斐波那契数列是什么

斐波那契数列,也称之为斐波那契数,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波那契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=Fn-1+Fn-2(n>=2,n∈N*),用文字来说,就是斐波那契数列由 0 和 1 开始,之后的斐波那契数列系数就由之前的两数相加。

2、递归方式实现

复制代码
    /**
     * 递归方式实现 斐波那契
     * @param n
     * @return
     */
    public static long fibDG(int n) {
        if (n <= 1) {
            return n;
        } else {
            return fibDG(n - 1) + fibDG(n - 2);
        }
    }
复制代码

这个方法在 main 方法内进行调用的时候,参数小于45的时候,运行可以出结果,但是参数再打一点运行相当慢。原因是这种实现方式每次调用都是从头开始调用,使得效率很低,

3、循环方式实现斐波那契

for 循环实现
复制代码
    /**
     * for 循环实现 斐波那契
     * @param n
     * @return
     */
    public static long fibFor(int n) {
        if (n <= 1) return n;
        /*
        优化逻辑:把计算的数据 保存下来,以便下次计算 从而节省资源开销
         */
        long first = 0;
        long second = 1;
        for (int i = 0; i < n - 1; i++) {
            long sum = first + second;
            first = second;
            second = sum;
        }
        return second;
    }
复制代码

for 循环实现的 斐波那契 效率相比递归实现大大的提升,因为循环实现记录了中间的计算结果,不用每次从底层重新计算,而是把保存的结果读取在计算即可。

while 循环实现

复制代码
  /**
     * While 循环实现 斐波那契 优化
     * @param n
     * @return
     */
    public static long fibWhile(int n) {
        if (n <= 1) return n;
        /*
        优化逻辑:把计算的数据 保存下来,以便下次计算 从而节省资源开销
         */
        long first = 0;
        long second = 1;
        while (n-- > 1) {
            second += first;
            first = second - first;
        }
        return second;
    }
复制代码

while 循环比的第二种for循环实现的效率略有提高。实现方式大致一样。

 

posted @   晓枫的春天  阅读(330)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示