(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。对于这样一个简单的练习,您实际上只关心整体调用的数量,使用静态计数器是最简单的答案。