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;