【发布时间】:2021-12-24 14:22:26
【问题描述】:
我想从用户那里得到n,然后通过依次递减斐波那契数列减去最大可能数,然后继续这个过程,直到它达到零。我们的斐波那契数列从 1 开始。数字 88 可以是 1 + 3 + 8 + 21 + 55 的形式写道,这些数字分别是斐波那契数列的句子 1、3、5、7 和 9。
输入:88
输出:9 7 5 3 1
我的代码:
class Main {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int[] fibo = new int[1000];
int[] arr = new int [100];
int d = 0;
int b = 0;
fibo[1] = 1;
fibo[2] = 2;
for (int i = 3, j = 1; i <= 20; i++, j++)
fibo[i] = fibo[i - 1] + fibo[i - 2];
b = n;
for (int i = 1, j = 1; i <= 20 && b >= 0; i++, j++) {
if (b == fibo[i] || b + 1 == fibo[i] || b - 1 == fibo[i]) {
d = i;
b -= fibo[d - 1];
System.out.println("B= " + b);
arr[j] = d - 1;
System.out.println("arr= " + arr[j]);
}
}
}
}
【问题讨论】:
-
一个直接的提示:您似乎认为 Java 中的数组是从
1开始索引的,但实际上它们是从0开始的。