斐波那契數列 的兩種實現方式(Java)


 

import java.util.Scanner;

/*
    斐波那契數列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
    如果設F(n)為該數列的第n項(n∈N*),那么這句話可以寫成如下形式::F(n)=F(n-1)+F(n-2)
    顯然這是一個線性遞推數列。
 */
public class Fibonacci {

    // 使用遞歸方法
    private static void recursion(int n) {
        int j = n;
        System.out.println();
        System.out.println("斐波那契數列的前" + j + "項為:");
        for (int i = 1; i <= j; i++) {
            System.out.print(getFibo(i) + "\t");
            if (i % 5 == 0)
                System.out.println();
        }

    }

    private static int getFibo(int i) {
        if (i == 1 || i == 2)
            return i - 1;
        else
            return getFibo(i - 1) + getFibo(i - 2);
    }

    // 使用三個變量
    private static void ThreeVariable(int n) {
        int a = 0, b = 1, c = 1;
        int j = n;
        System.out.println();
        System.out.println("斐波那契數列的前" + j + "項為:");
        System.out.print(a + "\t" + b + "\t");
        for (int i = 1; i <= j - 2; i++) {
            c = a + b;
            a = b;
            b = c;
            System.out.print(c + "\t");
            if ((i + 2) % 5 == 0)
                System.out.println();
        }
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {
            int n = in.nextInt();
//            ThreeVariable(n);// 使用數組
            recursion(n);// 使用遞歸
        }
        in.close();

    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM