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