/**
*
*/
/**
* @author jueying:
* @version 创建时间:2018-11-15 下午10:21:26
* 类说明
*/
/**
* @author jueying
*
*/
public class Test12 {
public static long startTime=0;
public static long endTime=0;
//循环
public int Recursive(int n){
int b=0;//第一项 f(0)
int a=1;//第二项 f(1)
int s=0;
if(n==1){
return a;
}else if(n==0){
return b;
}else{
for(int i=2;i<=n;i++){
s=a+b; //f(2)
b=a;
a=s;
}
return s;
}
}
//递归
public int Recycle(int n){
if(n==1){
return 1;
}else if(n==0){
return 0;
}else{
return Recycle(n-1)+Recycle(n-2);
}
}
/**
* @param args
*
* 斐波那契数列用递归还是循环好
*
* f(n) 定义 如果n=0 f(n)=1 如果n=1 f(n)=1 如果 n>1 f(n)=f(n-1)+f(n-2)
*
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Test12 t=new Test12();
startTime=System.currentTimeMillis();
System.out.println(t.Recursive(46));//1836311903
//System.out.println(t.Recycle(46));//1836311903
endTime=System.currentTimeMillis();
System.out.println("耗费时间:"+(endTime-startTime));//13527 1
}
}
递归层次越深,重复计算过程越多,所以循环效率在这种情况下降较好