Java 8 递归优化与函数组合实战
1. 递归优化之阶乘计算
在之前的阶乘计算中使用int类型,而现在使用BigInteger类型,其他代码基本相同,借助TailCall接口、TailCalls类和尾调用优化(TCO)技术。以下是相关代码:
if(number.equals(BigInteger.ONE)) return done(factorial); else return call(() -> factorialTailRec(multiply(factorial, number), decrement(number))); } public static BigInteger factorial(final BigInteger number) { return factorialTailRec(BigInteger.ONE, number).invoke(); }调用修改后的factorial()方法:
public static void main(final String[] args) { System.out.println(factorial(FIVE)); System.out.println(String.format("%.10s...", factorial(TWENT