2014-03-06 95 views
1

我有Fibonacci的递归方法。我正在尝试获取该方法的调用次数。当索引为3,4,5,6等时,计数输出应为3,5,9,15等等。我的代码给了我错误的输出。也许我的for循环正在影响它?请帮忙!斐波那契递归调用次数

import java.util.*; 

public class RecursionCallsFib{ 
    private static int count; 
    public static int rabbit(int n) { //Fibinocci method 
     count++; 
     if (n <= 2) { 
     return 1; 
     } 
     else {// n > 2, so n-1 > 0 and n-2 > 0  

     return rabbit(n-1) + rabbit(n-2); 
     } 
    } 

    public static void main(String [] args){ 
    System.out.println("Index" + "\t" + "Value" + "\t" + "Count"); 
     for(int p=1;p<=15;p++){ 
     System.out.println(p + "\t" + rabbit(p) + "\t" + count); 

     } 
    } 
} 
+0

您应该在用新的'p'调用时重置'count'。另外,初始化它。 – exception1

+0

我该如何重置计数?对不起,我是新来的Java和我更直观地看到事情。 –

+0

非常感谢! @ exception1 –

回答

4

正如评论建议,你必须初始化和复位count正常。

private static int count = 0; // <- initializing 

// rabbit is ok 

public static void main(String[] args) { 
    System.out.println("Index" + "\t" + "Value" + "\t" + "Count"); 
    for (int p = 1; p <= 15; p++) { 
     System.out.println(p + "\t" + rabbit(p) + "\t" + count); 
     count = 0; // <- resetting 
    } 
}