循环求斐波那契数

import java.util.Scanner;

public class TestFeiBoXunHuan {
    public static void main(String[] args) {
        System.out.println("求第几个斐波那契数?");
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        long r=g(n);
        System.out.println(r);
        
        for(int i=1;i<=n;i++)
        {
            System.out.print(g(i)+" ");
        }
        System.out.println();
        System.gc();
        sc.close();
    }

    private static long g(int n) {
        /**
         * 用循环代替两次递归调用
         * 
         * 1 1 2
         * a b
         *     b=a+b
         *  a=b-a
         *  
         * b=a+b;
         * a=b-a;
         */
        long a=1;
        long b=1;
        for(int i=3;i<=n;i++){
            b=a+b;
            a=b-a;
        }
        return b;
    }
}

运行结果

求第几个斐波那契数?
12
144
1 1 2 3 5 8 13 21 34 55 89 144 

你可能感兴趣的:(循环求斐波那契数)