簡體   English   中英

使用數組反向打印斐波那契數列 - Java

[英]Printing the fibonacci sequence in reverse using arrays - Java

用於按正常順序打印斐波那契,但無法弄清楚如何將其從 4181 反轉為 0。

    int[] numbers = new int[20];

    numbers[0] = 0;
    numbers[1] = 1;


    System.out.println("Fibonacci sequence:");
    System.out.println( numbers[0] );
    System.out.println( numbers[1] );


    for (int i = 2; i < 20; i++) {


        numbers[i] = numbers[i-2] + numbers[i-1];
        System.out.println( numbers[i] );
        for (int j = 19; j >= 0; j++) {
            numbers[j] = numbers[j-2] + numbers[j-1];
        System.out.println( numbers[j] );
    }
}

} }

第二個循環有不正確的增量部分 - 而不是j++應該是j-- 它現在說的是“從數字19開始。當數字大於或等於0時繼續。

每次迭代由1"數的增加

顯而易見的解決方案是首先遞歸地創建斐波那契數列(就像您所做的那樣),然后將其反轉:

List<Integer> list = Arrays.asList(arr);
Collections.reverse(list);

另一個(數學上更優雅的)解決方案是使用顯式公式通過索引計算斐波那契數列的每個成員,從n = 20開始一直計算到n = 1

p = (1 + sqrt(5)) / 2
q = (1 - sqrt(5)) / 2
F(n) = ((p ^ n) - (q ^ n)) / sqrt(5)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM