-1
我这一段代码:运动 - 原因是程序运行速度慢,以及如何解决它
public class Fibonacci {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
final int SIZE;
if (args.length == 0) {
SIZE = 100;
} else {
SIZE = Integer.parseInt(args[0]);
}
Stopwatch stopwatch = new Stopwatch();
for (int n = 1; n <= SIZE; n++) {
double timeStart = stopwatch.elapsedTime();
long fiboNumber = fib(n);
double timeEnd = stopwatch.elapsedTime();
System.out.print(n + " " + fiboNumber + "\t");
double lapTime = timeEnd - timeStart;
System.out.printf(" (%.3f \t %.3f)\n", lapTime, timeEnd);
}
}
public static long fib(int n) {
if (n < 2) {
return n;
} else {
return fib(n - 1) + fib(n - 2);
}
}
}
这项计划的目标是要修改它,程序运行流畅。 现在,当程序运行时,计数器会走慢大约40 我只是想不通为什么发生这种情况,所以它运行平稳,以100
你必须使用递归函数吗? –
为什么要重新计算你已经计算的东西?在确定斐波那契数列中的每个元素时,将它们存储在一个数组中。因此,不要每次都重新计算它们,只需参考已计算的那些。 – David
你基本上是打印斐波那契系列,还有其他方法可以在很短的时间内完成!在这里你正在做一些你已经计算好的东西,所以每次的时间几乎是两倍,所以它随着2的幂增加。 –