(Java)计算方法的递归调用(但总是一个新实例)

(Java)计算方法的递归调用(但总是一个新实例),java,recursion,methods,count,instance,Java,Recursion,Methods,Count,Instance,我想计算我的递归方法被输入的频率。问题是,对于每个递归调用,我都使用该类的不同实例。所以我的计数器变量将始终设置回原始值,然后只计算一次。因此,无论输入方法的频率有多高,我都会得到相同的值 一种解决方案是创建一个新类,其中包含一个计数器变量,可以正确地对其进行计数。但有更好的解决办法吗?看起来不太好 static class SearchTree { private Node node; private SearchTree left; private Se

我想计算我的递归方法被输入的频率。问题是,对于每个递归调用,我都使用该类的不同实例。所以我的计数器变量将始终设置回原始值,然后只计算一次。因此,无论输入方法的频率有多高,我都会得到相同的值

一种解决方案是创建一个新类,其中包含一个计数器变量,可以正确地对其进行计数。但有更好的解决办法吗?看起来不太好

static class SearchTree
{

      private Node node;
      private SearchTree left;
      private SearchTree right;

          private int count= 0;
这是我想使用count变量的方法。它总是显示为1,因为我将它与SearchTree的新实例一起递归使用

 public SearchTree select(int i)
{

   if(node.size != 0)
      {
         count++;
     System.out.println("Count: " + count);
     left.select(i);               
}



private class Node
{
   public int key;
   public int size;

   public Node(int x, int size)
   {
      key = x;
      this.size= size;
   }

}

}

计数
必须是一个数字。您可以使用关键字
static
声明类变量:

private static int count = 0;

计数
必须是一个数字。您可以使用关键字
static
声明类变量:

private static int count = 0;

count
设置为static。对于这样一个简单的练习,您实际上只关心整体调用的数量,使用静态计数器是最简单的答案。将
count
设置为static。对于这样一个简单的练习,您实际上只关心整体调用的数量,使用静态计数器是最简单的答案。