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

时间:2017-10-25 23:08:17

标签: java recursion

我有一个使用递归方法给出Fibonacci系列的程序。现在我想计算比较和递归函数调用。谁能解释一下计算比较和递归函数调用的方法?

var str = ".".Join(true, "a", "b", "", "c");
//or 
var arr = new[] { "a", "b", "", "c" };
str = ".".Join(true, arr);

1 个答案:

答案 0 :(得分:1)

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

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);
    }
}
}