码迷,mamicode.com
首页 > 其他好文 > 详细

尾部调用

时间:2020-01-18 14:21:33      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:main   ocs   click   private   none   递归   尾递归   color   hide   

在阮一峰大侠的ECMAScript 6 入门

了解到“尾递归”概念,拿到Java中一试吓一跳,对性能的提升不只是一星半点。

技术图片
public class BeanInfoDemo {
    public static void main(String[] args) {
        Fibonacci(50);
    }

    private static void Fibonacci(int n) {
        long t1 = System.currentTimeMillis();
        System.out.println("传统:" + FibonacciC(n));
        long t2 = System.currentTimeMillis();
        System.out.println("传统耗时:" + (t2 - t1));
        System.out.println("尾部:" + FibonacciNew(n, 1, 1));
        long t3 = System.currentTimeMillis();
        System.out.println("尾部耗时:" + (t3 - t2));
    }

    public static long FibonacciC(long n) {
        if (n <= 2) {
            return 1;
        }
        return FibonacciC(n - 1) + FibonacciC(n - 2);
    }

    public static long FibonacciNew(long n, long ac1, long ac2) {
        if (n <= 2) {
            return ac2;
        }
        return FibonacciNew(n - 1, ac2, ac1 + ac2);
    }

}
View Code

结果为:

传统:12586269025
传统耗时:30040
尾部:12586269025
尾部耗时:0

 

尾部调用

标签:main   ocs   click   private   none   递归   尾递归   color   hide   

原文地址:https://www.cnblogs.com/g120/p/12208730.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!