public class Fei_bo_na_qi{ public static void main(String[] args){ //main方法,程序入口 int i = 10; //聲明一個int類型的變量i,并賦值為10 int a = 0; //聲明一個int數(shù)據(jù)類型的變量a for(int j=i; j >=1 ; --j){ //for循環(huán):j=i=10,j>=1 a+=m1(j); //調(diào)用m1方法,并把m1的值賦值給a } System.out.PRintln( a );//輸出a的值 } public static int m1(int n){ //聲明m1方法,形參為int n,把n=10帶入 if (n==1) { //當(dāng)n=1時,返回值為0 return 0; } if (n==2) { //當(dāng)n2時,返回值為1 return 1; }else{ //當(dāng)n既不等于1也不等于2時,執(zhí)行下面的語句 return m1(n-1)+m1(n-2); //運行原理: 把n=10帶入后,返回m1(9)+m1(8),--j=9,9>=1;帶入后返回m1(8)+m1(7),再把--j=8帶入,以此類推,當(dāng)n=3時,帶入后返回m1(2)+m1(1)=0+1=1,則m1(3)=1,m3運行完成后返回m1(4),m1(4)=m1(3)+m1(4-2),m1(3)=1,要把m1(4-2)帶入運行一遍,每當(dāng)m1(n-1)運行一次,都要把m1(n-2)運行一遍;同樣把n=10帶入后,返回m1(9)+m1(8),把m1(8)帶入,--j=7,7>=1;帶入后返回m1(6)+m1(5),每運行一次m1(n-2),都要把m1(n-2)運行一遍。最后得出m1的值,賦值給a,最后輸出。
斐波那契,這個困擾我半天的謎題,終于給解開了。
新聞熱點
疑難解答