优化前
package myJavaStudy;
import java.util.Scanner;
public class Main {
static int count = 0;
public static void main(String[] args) {
System.out.println(fib(20));
System.out.println("共执行" + count + "次");
}
private static int fib(int i) {
// TODO Auto-generated method stub
count++;
if (i == 1 || i == 2) {
return 1;
}
return fib(i - 1) + fib(i - 2);
}
}
优化后
package myJavaStudy;
import java.util.Scanner;
public class Main {
static int count = 0;
static int array[] = new int[25];
public static void main(String[] args) {
System.out.println(fib(20));
System.out.println("共执行" + count + "次");
}
private static int fib(int i) {
// TODO Auto-generated method stub
count++;
if (i == 1 || i == 2) {
array[i] = 1;
return array[i];
}
// 说明值被记录了的,因为默认是0
if (array[i] != 0) {
return array[i];
}
array[i] = fib(i - 1) + fib(i - 2);
return array[i];
}
}