Java 斐波那契倒向序列
代码如下:Java 斐波那契倒向序列,java,math,fibonacci,Java,Math,Fibonacci,代码如下: class Fibonacci { static final int MIN_INDEX = 1; public static void main (String[] args){ int high = 1; int low = 1; String jel; System.out.println("9: " + high); for (int i = 8; i >= MIN_INDEX;
class Fibonacci {
static final int MIN_INDEX = 1;
public static void main (String[] args){
int high = 1;
int low = 1;
String jel;
System.out.println("9: " + high);
for (int i = 8; i >= MIN_INDEX; i--){
if (high % 2 == 0)
jel = " *";
else
jel = " ";
System.out.println(i + ": " + high + jel);
high = low + high;
low = high - low;
}
}
}
我想做这个程序,把输出的数字写下来。因此,我不仅想要从最后一步到第一步的“我”步骤,还想要数字
在这个例子中,输出是:1,1,2,3,5,8,例如。。。但是我想在序列中显示它看起来像:例如,8,5,3,2,1,1
我试图改变高低,但我不能让这个程序强制“向后”运行 您可以将它们插入一个数组,然后反转数组并打印出来?
虽然效率不高,但很容易做到。一种选择是在运行时将输出存储在数组中,然后向后遍历数组。有两种可能性:
r
,注意r[i]=r[i-2]-r[i-1]
由于斐波那契序列的性质,您可以将所有元素存储到一个数据结构中,然后将它们向后打印出来,因为每个值(第一个和第二个除外)取决于前面两个值的总和。是的。。就像其他人说的。。我会储存在一个集合中,然后分类和打印 我刚刚修改了你的例子。。。运行它,看看这是否是您期望的行为
class Fibonacci {
static final int MIN_INDEX = 1;
public static void main(String[] args) {
int high = 1;
int low = 1;
String jel;
List<String> numbers = new ArrayList<String>();
numbers.add("9: " + high);
for (int i = 8; i >= MIN_INDEX; i--) {
if (high % 2 == 0) {
jel = " *";
}
else {
jel = " ";
}
numbers.add(i + ": " + high + jel);
high = low + high;
low = high - low;
}
Collections.sort(numbers);
System.out.println(numbers);
}
类斐波那契{
静态最终整数最小指数=1;
公共静态void main(字符串[]args){
int高=1;
int低=1;
串果冻;
列表编号=新的ArrayList();
数字。添加(“9:+高);
对于(int i=8;i>=MIN\u索引;i--){
如果(高%2==0){
jel=“*”;
}
否则{
果冻=”;
}
添加(i+“:”+高+果冻);
高=低+高;
低=高-低;
}
集合。排序(编号);
系统输出打印项次(数字);
}
}我也会正常地运行序列(即不反向),并将结果存储在集合中(可能是ArrayList)。但无需在列表之后排序,甚至无需按相反顺序遍历列表,您只需使用以下命令将序列中的每个新“条目”添加到列表中的位置0:
list.add(0, i + ": " + high + jel);
这将确保列表按相反顺序存储序列
这只是另一种可能的解决方案。这里没有Java,但是:
在哪里
一枝黄花=(1+Sqrt[5])/2
因此,您可以:
For[i = 10, i > 0, i--,
Print[f[i]];
];
输出:
55.
34.
21.
13.
8.
5.
3.
2.
1.
1.
编辑
作为一个旁白,这是一个在自然、科学和艺术领域中随处可见的数字
你可以找到帕台农神庙的黄金比例。你的意思是
f[i]=f[i+1]-f[i+1]
,不是吗?不,我没有。在“8,5,3,2,1,1”中,每个项都是前面两步的元素和前面一个项之间的差值。啊,但是不要称它为f
,最好使用rf
之类的东西(反向斐波那契)。排序并不是你真正想要的,你只需要反转结果(通常比排序快)。
For[i = 10, i > 0, i--,
Print[f[i]];
];
55.
34.
21.
13.
8.
5.
3.
2.
1.
1.