habe ich dieses Stück Code:Übung - Reason Programm läuft langsam und wie man es beheben
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);
}
}
}
Das Ziel dieses Programms ist es so zu modifizieren, das Programm glatt läuft. Jetzt, wenn das Programm läuft wird der Zähler langsam um 40 gehen. Ich kann einfach nicht herausfinden, warum das passiert und wie ich es beheben kann, so läuft es glatt zu 100.
Sie müssen die rekursive Funktion verwenden? –
Warum berechnen Sie etwas, das Sie bereits berechnet haben? Wenn Sie jedes Element in der Fibonacci-Sequenz bestimmen, speichern Sie sie in einem Array. Anstatt sie jedes Mal neu zu berechnen, beziehen Sie sich einfach auf die, die Sie bereits berechnet haben. – David
Sie drucken grundsätzlich die Fibonacci-Serie. Es gibt andere Möglichkeiten, dies in sehr kurzer Zeit zu tun! Hier machst du einige Dinge, die du bereits berechnet hast, also wird die Zeit jedes Mal fast doppelt so groß, so dass es mit der Kraft von 2 zunimmt. –