计算斐波那契数列的两种方式

递归方式和循环方式,仅供参考

public class practice {
	static long[] f = new long[]{1,1,2};
    static int i = 2;
    public static void main(String[] args) {
    	while(true){
    		int num = new Scanner(System.in).nextInt();
            long start1 = System.currentTimeMillis();
            System.out.println("斐波那契数列递归方式:第"+num+"位="+f1(num,i));
            System.out.println("第"+num+"位所需时间="+(System.currentTimeMillis()-start1)+"毫秒");
            System.out.println("========");

            long start2 = System.currentTimeMillis();
            System.out.println("斐波那契数列循环方式:第"+num+"位="+f2(num));
            System.out.println("第"+num+"位所需时间="+(System.currentTimeMillis()-start2)+"毫秒");
            
            f = new long[]{1,1,2};
            i = 2;
    	}
    }

    public static long f1(int num,int i){
        f[i++ % 3] = f[i++ % 3] + f[i-- % 3];
        if(i<num) f1(num,i);
        return f[(num-1) % 3];
    }

    public static long f2(int num){
        long[] f = new long[]{1,1,2};
        for(int i = 2;i < num;) {
            f[i++ % 3] = f[i++ % 3] + f[i-- % 3];
        }
        return f[(num-1) % 3];
    }
}

执行结果

15
斐波那契数列递归方式:15=61015位所需时间=0毫秒
========
斐波那契数列循环方式:15=61015位所需时间=1毫秒
1000
斐波那契数列递归方式:1000=8177703259943977711000位所需时间=0毫秒
========
斐波那契数列循环方式:1000=8177703259943977711000位所需时间=0毫秒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值