你的位置:首页 > Java教程

[Java教程]斐波那契前n位的和


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,最后输出。
 

 斐波那契,这个困扰我半天的谜题,终于给解开了。