package aaa;
import java.util.Date;
public class Fibo{
//方式1
public static void fiBoCzene(Long a,Long b,Integer i){
if (i>3) {
i--;
Long c = null;
c=a;
a=b;
b=c+b;
fiBoCzene(a, b,i);
}else {
System.out.println(a+b);
}
}
//方式二:递归方式
public static Long fibonacci(int n){
if(n <= 2){
return 1L;
}else{
return fibonacci(n-1) + fibonacci(n-2);
}
}
// 方式三:递推实现方式
public static Long fibonacciNormal(int n){
if(n <= 2){
return 1L;
}
Long n1 = 1L, n2 = 1L, sn = 0L;
for(int i = 0; i < n - 2; i ++){
sn = n1 + n2;
n1 = n2;
n2 = sn;
}
return sn;
}
public static void main(String[] args) {
//现在有的水数
Integer c=31;
Long date = System.currentTimeMillis();
fiBoCzene(0L,1L,c+1);
Long date2 = System.currentTimeMillis();
System.out.println("----方式一耗时------"+(date2-date));
System.out.println(fibonacciNormal(c));
Long date3 = System.currentTimeMillis();
System.out.println("-----方式二耗时-----"+(date3-date2));
System.out.println(fibonacci(c));
Long date4 = System.currentTimeMillis();
System.out.println("-----方式三耗时-----"+(date4-date3));
}
}