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