package cn.itcase.algorithm.sort;
/**递归---斐波那契数列 0 1 1 2 3 5 8 13 21 34 55 89 144 233
递归:两个重要条件 ,1、自己调用自己 2、结束条件
优点:代码简单
缺点:时间 空间消耗大
*/
public class DiGui {
public static void main(String[] args) {
//方法一:
int num1 = 0;
int num2 = 1;
int numn = 1;
/* //第三项
numn = num1 + num2;
num1 = num2 ;
num2 = numn ;
//第四项
numn = num1 + num2;
num1 = num2 ;
num2 = numn ;
//第五项
numn = num1 + num2;
num1 = num2 ;
num2 = numn ;*/
int n = 47;
long startTime = System.currentTimeMillis();
for (int i = 3 ; i <= n; i++) {
numn = num1 + num2;
num1 = num2 ;
num2 = numn ;
//System.out.println(numn); 求前面20项每一项的输出
}
long endTime = System.currentTimeMillis();
System.out.println(numn); //只想求第20项
System.out.println("循环用的时间是:"+(endTime-startTime));
//方法二: 递归方法
long startTime1 = System.currentTimeMillis();
System.out.println(fib(n));
long endTime1 = System.currentTimeMillis();
System.out.println("递归用的时间是:"+(endTime1-startTime1));
}
//写一个方法,调用
public static int fib(int num){ //num------第几项
if(num == 1){
return 0; //如果是第一项,就返回0
}
if(num == 2){ //如果是第二项,就返回1
return 1;
}
return fib(num-1)+fib(num-2); /**假如这是20项,那么第20项就等于第19项加上第18项*/
}
}
这是35个数的斐波那契
这是47个数的斐波那契