[英]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.