我正在编写一个递归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语句。
谢谢!