FIbonacci系列使用递归错误?

XXX*_*XXX -1 java

public class Fibonacci2 {

static int fib(int n) {
  if(n==1 || n==2) {
    return(1);
  }
  return fib((n-1)+fib(n-2));
}

// Stackoverflow error //
public static void main(String[] args) { 
  int i, n = 7;
  for(i=1; i<=n; i++)
    System.out.println("FIbonaci series" + fib(i));
  }
}
Run Code Online (Sandbox Code Playgroud)

这个程序遇到运行时异常(stackoverflow)请告诉如何处理它.

Pet*_*rey 5

您逐步调试调试器中的代码,您将看到它

return fib((n-1)+fib(n-2));
Run Code Online (Sandbox Code Playgroud)

应该

return fib(n-1) + fib(n-2);
Run Code Online (Sandbox Code Playgroud)

就像你拥有的一样

return fib(fib(n-2));
Run Code Online (Sandbox Code Playgroud)

这很快就会产生很高的递归水平.