请您检查我的工作并帮助指导我完成 System.currentTimeMillis() 函数。我知道它会拍摄我的计算机时间的快照,然后当我结束它时,它会拍摄另一个快照,我使用这些时间的差异来获取我的运行时间。只是不确定我是否正确实现了它,因为我的迭代函数和递归函数的时间几乎总是相同或最多 1 次。我有点困惑,是否在迭代开始之前再次调用我的开始时间,或者我对迭代时间的时间检查是否真的是迭代加上我的递归函数。我应该让总迭代时间为 endTimeIter - endTimeRecur 吗?如有任何帮助,我们将不胜感激。
public class FibTest{
public static void main (String[] args){
long startTime = System.currentTimeMillis();
int n = 40;
System.out.println("The 40th Fibonacci number per my recursive function is: " + fibRecur(n));
long endTimeRecur = System.currentTimeMillis();
long totalTimeRecur = endTimeRecur - startTime;
System.out.println("The 40th Fibonacci number per my recursive function is: " + fibIter(n));
long endTimeIter = System.currentTimeMillis();
long totalTimeIter = endTimeIter - startTime;
System.out.println("The time it took to find Fib(40) with my recursive method was: " + totalTimeRecur);
System.out.println("The time it took to find Fib(40) with my iterative method was: " + totalTimeIter);
}
public static int fibRecur(int n){
if (n < 3) return 1;
return fibRecur(n-2) + fibRecur(n-1);
}
public static int fibIter(int n){
int fib1 = 1;
int fib2 = 1;
int i, result = 0;
for (i = 2; i < n; i++ ){
result = fib1 + fib2;
fib1 = fib2;
fib2 = result;
}
return result;
}
}
最佳答案
这是必须实现时差的一种方法
long time = System.currentTimeMillis();
methodA();
System.out.println(System.currentTimeMillis() - time);
time = System.currentTimeMillis();
methodB();
System.out.println(System.currentTimeMillis() - time);
关于Java Fib迭代和Fib递归时间比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25881422/