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); } }