"非静态变量,这不能从静态上下文引用"?

Ham*_*eni 5 java recursion static syntax-error

我是一个Java新手,我正试图通过递归函数部署斐波那契线,然后计算运行时间.这是我设法编写的代码:

class nanoTime{
    int fib(int n){
        if(n==0) return 0;
        if(n==1) return 1;
        return this.fib(n-1)+this.fib(n-2);
    }
    public static void main(String[] args){
        double beginTime,endTime,runTime;
        int n=10;
        beginTime = System.nanoTime();
        n = this.fib(n);
        endTime = System.nanoTime();
        runTime = endTime-beginTime;
        System.out.println("Run Time:" + runTime);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我试图将其变为字节码时,我收到以下错误:

nanoTime.java:11: non-static variable this cannot be referenced from a static context
Run Code Online (Sandbox Code Playgroud)

我想知道这是什么问题?!

Mou*_*ous 12

更改

n = this.fib(n);
Run Code Online (Sandbox Code Playgroud)

n = fib(n);
Run Code Online (Sandbox Code Playgroud)

并使方法fib静态.

或者,改变

n = this.fib(n);
Run Code Online (Sandbox Code Playgroud)

n = new nanoTime().fib(n);
Run Code Online (Sandbox Code Playgroud)