Java Recursion:保存变量,然后传递给方法比直接传递慢

时间:2015-04-05 20:37:58

标签: java recursion complexity-theory

我正在编写一个递归Java算法,我试图让它尽可能快地工作。

现在我面临着一个困境,因为我想将一些值存储到变量中,然后将变量传递给下一个递归调用(而不是直接传递值)。这种方法可以节省一些if语句。但是,我想知道它是否也会使程序变慢,因为它必须在每次调用时都存储一个变量。

所以我想知道这个简化问题是否存在:

public int Sum(int a) {
    if (a==0)
        return 0;

    int tmp = heavyComputation(a);
    return (tmp + Sum(a-1))

比这更慢:

public int Sum(int a) {
    if (a==0)
        return 0;

    return (heavyComputation(a) + Sum(a-1))

在这个简化的例子中它并没有太大的区别,但在我的代码中,第一种方法会为我节省很多丑陋的if语句。

谢谢!

0 个答案:

没有答案