品易云推流 关闭
文章详情页
文章 > java基础 > java尾部递归如何使用

java尾部递归如何使用

头像

小妮浅浅

2021-05-13 16:54:54947浏览 · 0收藏 · 0评论

1、说明

在尾部递归中,递归调用是函数执行的最后一件事,因此编译器不需要保存函数堆栈帧。大多数编译器可以像优化迭代代码一样优化尾递归代码,从而避免了性能损失。

2、实例

使用尾部递送,可以通过以下方式编写相同的函数,但Java并没有优化这一点,尽管有一些解决方法,但在标准测试中仍然表现得更好。

public class FactorialSample {
    // benchmark 16.701 ns/op
    static long factorialTailRec(long num) {
        return factorial(1, num);
    }
 
    static long factorial(long accumulator, long val) {
        return val == 1 ? accumulator : factorial(accumulator * val, val - 1);
    }
 
    public static void main(String[] args) {
        System.out.println(factorialTailRec(20)); // 2432902008176640000
    }
}

以上就是java尾部递归的使用,希望对大家有所帮助。更多Java学习指路:Java基础

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

底部广告图