Java 如何计算比较和递归函数调用?

Java 如何计算比较和递归函数调用?,java,recursion,Java,Recursion,我有一个程序,用递归方法给出斐波那契级数。现在我想计算比较和递归函数调用。有人能给我解释一下计算比较和递归函数调用的方法吗 public class FibonacciRecursive { public static void main(String[] args) { long n = Long.parseLong(args[0]); long i; for (i = 1; i <= n; i++) {

我有一个程序,用递归方法给出斐波那契级数。现在我想计算比较和递归函数调用。有人能给我解释一下计算比较和递归函数调用的方法吗

public class FibonacciRecursive
{
    public static void main(String[] args)
    {
        long n = Long.parseLong(args[0]);
        long i;
        for (i = 1; i <= n; i++)
        {
            System.out.printf("%19d", fibRecursive(i));
            if (i % 4 == 0)
            {
                System.out.println();
            }
        }
        if ((i - 1) % 4 != 0)
        {
            System.out.println();
        }
    }

    private static long fibRecursive(long n)
    {
        if (n <= 2)
        {
            return 1;
        }
        else
        {
            return fibRecursive(n - 2) + fibRecursive(n - 1);
        }
    }
}

只需添加两个计数器,并在比较和fibRecursive调用之后增加它们


@f1sh现在可以肯定地编译了。@f1sh还应该将recursionCalls增加2,对吗?这个方法的recursionCalls和comparison不应该相等吗?@K.Ji您有1个条件和2个方法调用
public class FibonacciRecursive {
private static long comparisons = 0;
private static long recursionCalls = 0;
public static void main(String[] args) { 
    long n = Long.parseLong(args[0]);
    long i;
    for (i = 1; i <= n; i++) {
        System.out.printf("%19d", fibRecursive(i));
        if (i % 4 == 0) {
            System.out.println();
        }
    }
    if ((i - 1) % 4 != 0) {
        System.out.println();
    }
    System.out.println(comparisons);
    System.out.println(recursionCalls);
}

private static long fibRecursive(long n) {
    comparisons++;
    if (n <= 2) {
        return 1;
    } else {
        recursionCalls += 2;
        return fibRecursive(n - 2) + fibRecursive(n - 1);
    }
}
}