Java 如何 return 斐波那契值从 1 开始的数组?
Java how to return an array with fibonacci values starting at 1?
我正在编写一个 void 函数 fibFill
,它用斐波那契数列填充一个数组。它不需要 return 任何东西。
这是我目前的情况:
void fibFill(int[] fibo) {
fibo[0] = 1;
fibo[1] = 1;
for (int i = 2; i < fibo.length; i++) {
fibo[i] = fibo[i - 1] + fibo[i - 2];
}
int pos(int position) {
return fibo[pos];
}
}
例如,如果我将长度为 5 的数组传递给该方法,它将像这样覆盖传递的数组的内容:[1, 1, 2, 3, 5]
您的 fibFill
方法不应嵌入 pos
方法;我会把它变成static
(这样它就可以在没有实例的情况下被调用),比如
static void fibFill(int[] fibo) {
fibo[0] = 1;
fibo[1] = 1;
for (int i = 2; i < fibo.length; i++) {
fibo[i] = fibo[i - 1] + fibo[i - 2];
}
}
然后你可以用
之类的东西来测试它
public static void main(String[] args) {
int[] fib = new int[10];
fibFill(fib);
System.out.println(Arrays.toString(fib));
}
输出(按要求)从 1 开始的斐波那契值
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
固定:
static void fibFill(int [] fibo) {
if(fibo.length==0) return;
if(fibo.length==1)
{
fibo[0]=1;
return;
}
fibo[0] = 1;
fibo[1] = 1;
for (int i = 2;i < fibo.length; i++)
{
fibo[i]=fibo[i-1]+fibo[i-2];
}
}
//there is no need for pos, as you can get it by type fibo[index]
请注意,此解的时间复杂度为O(n),你也可以直接用公式来解,还有更多计算斐波那契数的方法。想要查询更多的信息:
five ways to calculate fibonacci
if (n==0||n==1) {
return n;
}
int smallassumption=fib(n-1);
int smallassumption2=fib(n-2);
int ans=smallassumption+smallassumption2;
return ans;
我正在编写一个 void 函数 fibFill
,它用斐波那契数列填充一个数组。它不需要 return 任何东西。
这是我目前的情况:
void fibFill(int[] fibo) {
fibo[0] = 1;
fibo[1] = 1;
for (int i = 2; i < fibo.length; i++) {
fibo[i] = fibo[i - 1] + fibo[i - 2];
}
int pos(int position) {
return fibo[pos];
}
}
例如,如果我将长度为 5 的数组传递给该方法,它将像这样覆盖传递的数组的内容:[1, 1, 2, 3, 5]
您的 fibFill
方法不应嵌入 pos
方法;我会把它变成static
(这样它就可以在没有实例的情况下被调用),比如
static void fibFill(int[] fibo) {
fibo[0] = 1;
fibo[1] = 1;
for (int i = 2; i < fibo.length; i++) {
fibo[i] = fibo[i - 1] + fibo[i - 2];
}
}
然后你可以用
之类的东西来测试它public static void main(String[] args) {
int[] fib = new int[10];
fibFill(fib);
System.out.println(Arrays.toString(fib));
}
输出(按要求)从 1 开始的斐波那契值
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
固定:
static void fibFill(int [] fibo) {
if(fibo.length==0) return;
if(fibo.length==1)
{
fibo[0]=1;
return;
}
fibo[0] = 1;
fibo[1] = 1;
for (int i = 2;i < fibo.length; i++)
{
fibo[i]=fibo[i-1]+fibo[i-2];
}
}
//there is no need for pos, as you can get it by type fibo[index]
请注意,此解的时间复杂度为O(n),你也可以直接用公式来解,还有更多计算斐波那契数的方法。想要查询更多的信息: five ways to calculate fibonacci
if (n==0||n==1) {
return n;
}
int smallassumption=fib(n-1);
int smallassumption2=fib(n-2);
int ans=smallassumption+smallassumption2;
return ans;