public class Fei_bo_na_qi{ public static void main(String[] args){ //main方法,程序入口 int i = 10; //声明一个int类型的变量i,并赋值为10 int a = 0; //声明一个int数据类型的变量a for(int j=i; j >=1 ; --j){ //for循环:j=i=10,j>=1 a+=m1(j); //调用m1方法,并把m1的值赋值给a } System.out.PRintln( a );//输出a的值 } public static int m1(int n){ //声明m1方法,形参为int n,把n=10带入 if (n==1) { //当n=1时,返回值为0 return 0; } if (n==2) { //当n2时,返回值为1 return 1; }else{ //当n既不等于1也不等于2时,执行下面的语句 return m1(n-1)+m1(n-2); //运行原理: 把n=10带入后,返回m1(9)+m1(8),--j=9,9>=1;带入后返回m1(8)+m1(7),再把--j=8带入,以此类推,当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)带入运行一遍,每当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,最后输出。
斐波那契,这个困扰我半天的谜题,终于给解开了。
新闻热点
疑难解答