public class TestMethod3 { |
public static void main(String[] args) { |
//提出项数:n |
int n= 47 ; |
|
//循环 |
long startTime=System.currentTimeMillis(); |
int num1= 0 ; //numn的前前项 |
int num2= 1 ; //numn的前一项 |
int numn= 1 ; //numn--->从第三项开始的每个数用numn接收 |
//第三项: |
numn=num1+num2; |
for ( int i= 4 ;i<=n;i++){ //i从第4项到第47项,之后的项就会溢出,超过int类型的表数范围,变成负数! |
num1=num2; |
num2=numn; |
numn=num1+num2; |
} |
System.out.println(numn); |
long endTime=System.currentTimeMillis(); |
System.out.println( "循环用的时间:" +(endTime-startTime)); |
//第二种方式:递归 |
long startTime2=System.currentTimeMillis(); |
System.out.println(getFibo(n)); |
long endTime2=System.currentTimeMillis(); |
System.out.println( "递归用的时间:" +(endTime2-startTime2)); |
} |
|
//算出第n项对应的数 |
public static int getFibo( int n){ |
if (n== 2 ){ |
return 1 ; |
} |
if (n== 1 ){ |
return 0 ; |
} |
return getFibo(n- 1 )+getFibo(n- 2 ); |
} |
|
|
} |