Java 降低以下斐波那契算法的空间复杂度

Java 降低以下斐波那契算法的空间复杂度,java,algorithm,space-complexity,Java,Algorithm,Space Complexity,降低以下斐波那契算法的空间复杂度 我需要帮助。我想不出任何办法来做这件事。任何帮助都将不胜感激 public static long fibonacci (int n){ long[] f = new long[n+1]; f[0] = 0; f[1] = 1; for(int i = 2; i <=n; i++) f[i] = f[i-1] + f[1-2]; return f[n]; } 公共静态长fibonacci(int n){

降低以下斐波那契算法的空间复杂度

我需要帮助。我想不出任何办法来做这件事。任何帮助都将不胜感激

public static long fibonacci (int n){
    long[] f = new long[n+1];
    f[0] = 0;
    f[1] = 1;
    for(int i = 2; i <=n; i++)
      f[i] = f[i-1] + f[1-2];
    return f[n];
}
公共静态长fibonacci(int n){
长[]f=新长[n+1];
f[0]=0;
f[1]=1;

对于(int i=2;i基本上,问题是这条线:

long[] f=new long[n+1];
这条线创建了一个长数组,需要n+1个长数组,空间复杂度要求是线性的

@tzortzik提到的递归方法将具有与每个堆栈帧所需空间相同的空间复杂度,并且还需要n-1个堆栈帧

在你的例子中,关键是你不需要数组,你总是需要两个值

毕竟,如果不使用以前的计算,就没有理由保存它们

公共静态长fibonacci(int n){
longlast=0;
长电流=1;
对于(int i=1;我请显示您尝试了什么。