java版斐波那契

各个oj上都能碰到斐波那契数列这种经典的问题,我的博客里面也写过斐波那契算法之类的问题,这次不讨论快速幂去解决斐波那契,这次是来优化递归来计算斐波那契

废话不多说直接上代码:

/**
*@author:StormMaybin
*@Date:0425
*@<description>练习</description>
*/

public class Fibonacci
{
    public static long F (int N)
    {
        if (N == 0)
        {
            return 0;
        }
        if (N == 1)
        {
            return 1;
        }
        return F(N-1) + F(N-2);
    }
    public static void main (String [] arguments)
    {
        for (int N = 0;N < 50 ;N++ )
        {
            System.out.println(N + "的斐波那契数是 :"+F(N));
        }
    }
}

上面这个代码就是最常规的递归调用,这50组数据,我测了大概一分钟才全部算出结果,要是更大一点,100,200呢?可想而知肯定炸了,下面来优化一下递归来提高速度

public clamias Fibonacci
{
    public static void main(String[] args)
    {
        long [] A = new long[50];
        for (int N = 0;N < 50 ;N++ )
        {
            System.out.println(N + "的斐波那契数是 :"+F(A,N));
        }
        
    }
/*下面这个函数要这样写的话,运行速度很慢,所以可以稍微改动一下代码来提高运行速度!
*这个程序开始时候不是这样的,这是修改过的数组是用来储存计算完的结果,下次调用的时候直接
*用数组里面的结果,省得递归去浪费时间!
*/
    public static long F(long [] A , int n)
    {
        if (n == 0)
        {
            A[n] = 0;
            return A[n];
        }
        else if (n == 1)
        {
            A[n] = 1;
            return A[n];
        }
        else
        {
            A[n] = A[n-1] + A[n-2];    
            return A[n];
        }
    }
}

代码经过这样的优化,变成秒出结果!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值