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,最后输出。
斐波那契,这个困扰我半天的谜题,终于给解开了。