我有一个任务,他们给我一个递归斐波纳契算法,并要求返回一个时间。我用.SystemCurrentMilis完成了,我发布了下面的代码,但是测试人员说它需要花费很长时间来计算时间,所以我认为我必须给他们一些teoretic时间,因为执行函数和获取时间太长。希望对你有帮助。如何使函数timetocompute在任何时候都能更快地工作。
import java.math.BigInteger;
import java.math.BigDecimal;
public class Fibonacci {
public BigDecimal timeToComputeRecursiveFibonacci(int n) {
long startTime = System.currentTimeMillis();
recursive(n);
long finishTime = System.currentTimeMillis();
long tempTime = finishTime - startTime;
BigDecimal usedTime = BigDecimal.valueOf(tempTime);
return usedTime;
}
public BigInteger recursive(int n) {
if (n <= 1)
return BigInteger.valueOf(n);
return recursive(n - 1).add(recursive(n - 2));
}
}
答案 0 :(得分:-1)
我已经为递归函数创建了一些测量值。如果您考虑一下,如果您可以测量recursive(n)
,那么recursive(n+1)
将慢近2倍,因为它需要计算n和n-1的函数。
因此,您可以从第30次估算第40个数字,其中包含1.65 ^ 10 * 25,即1.65^m*time(n)
。这可以转换为年。我会尝试这样做。