【问题标题】:(Java) Counting recursive calls of method (but always a new instance) [duplicate](Java)计算方法的递归调用(但总是一个新实例)[重复]
【发布时间】:2019-05-25 12:54:24
【问题描述】:

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

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

static class SearchTree
{

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

          private int count= 0;

这是我想使用计数变量的方法。它总是显示为 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;
   }

}

}

【问题讨论】:

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

标签: java recursion methods count instance


【解决方案1】:

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

private static int count = 0;

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2019-06-21
    • 2017-02-28
    • 1970-01-01
    相关资源
    最近更新 更多