Tag: tail recursion

为什么Scala的尾递归慢于Java?

使用尾递归进行简单加法的Scala代码 def add(list : List[Int],sum:Int):Int = { //Thread.dumpStack() if (list.isEmpty) { sum } else { val headVal = list.head add(list.tail, sum + headVal) } } 下面是递归模式下添加的java代码。 public static int add(List list, Integer sum) { // Thread.dumpStack(); if (list.isEmpty()) { return sum; } else { int headVal = list.remove(0); return add(list, sum + headVal); } } […]

如何使用我的Fibonacci方法实现Tail递归?

我正在尝试计算大量的Fibonacci序列,因此我使用大整数。 我的方式可以达到10000左右,但是我的堆栈空间不足。 我意识到我可以增加堆栈和堆空间,但我的理解是尾递归可以解决空间问题。 这是我的代码.. public class FibRecursion{ static BigInteger[] fval; public static void main(String[] args) { int index; Scanner input = new Scanner(System.in); index = input.nextInt(); fval = new BigInteger[index + 1]; System.out.println(fib_rec(index)); } public static BigInteger fib_rec(int index){ BigInteger result = BigInteger.ONE; if(index <= 2){ return result; } else{ if(fval[index] != null){ result=fval[index]; } […]

Java是否支持尾递归?

可能重复: 为什么JVM仍然不支持尾调用优化? 我在网上看到了很多不同的答案,所以我想我会问专家。