我有一个使用递归方法给出Fibonacci系列的程序。现在我想计算比较和递归函数调用。谁能解释一下计算比较和递归函数调用的方法?
var str = ".".Join(true, "a", "b", "", "c");
//or
var arr = new[] { "a", "b", "", "c" };
str = ".".Join(true, arr);
答案 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);
}
}
}