public class MyFibonacci {
private static class GenerateTask1 implements Runnable {
private final int n;
public GenerateTask1(int n) {
this.n = n;
}
public void run() {
long startTime = System.nanoTime();
String fibonacci = getFibonacciOf(n);
print(fibonacci);
println(" spend " + (System.nanoTime() - startTime) / 1000.0 );
startTime = System.nanoTime();
int num = f(n);
print(num);
println(" spend " + (System.nanoTime() - startTime) / 1000.0);
}
private String getFibonacciOf(int n) {
StringBuilder result = new StringBuilder();
int num0 = 0;
int num1 = 1;
int tmp = 0;
for(int j = 0; j < n; j++) {
if( j < 2 ) {
tmp = j;
}else {
tmp = num0 + num1;
num0 = num1;
num1 = tmp;
}
result.append(tmp);
result.append(",");
}
result.deleteCharAt(result.length() - 1);
return result.toString();
}
private int f(int n) {
if( n < 2 ) {
return n;
}
return f(n - 1) + f(n -2);
}
}
public static void main(String[] args) {
new Thread(new GenerateTask1(40)).start();
}
}
循環(huán)與遞歸花費(fèi)的時(shí)間單位分別是 654.161,514447.014
同時(shí)咏删,循環(huán)實(shí)現(xiàn)花費(fèi)的時(shí)間會(huì)隨著n的增加而線性增加惹想;遞歸實(shí)現(xiàn)
花費(fèi)的時(shí)間則是呈指數(shù)形式增加。