Java 递归问题测试用例中的错误

Java 递归问题测试用例中的错误,java,recursion,Java,Recursion,我正在为竞争性编程解决一个代码,我认为正确的代码在某些测试用例中抛出了一个错误: 问题是使用递归求整数中的总位数 我的代码: import java.util.*; import java.io.*; import java.lang.*; class Driver_class { public static void main(String args[]) { Scanner sc = new Scanner(System.in); int t

我正在为竞争性编程解决一个代码,我认为正确的代码在某些测试用例中抛出了一个错误: 问题是使用递归求整数中的总位数

我的代码:

import java.util.*;
import java.io.*;
import java.lang.*;

class Driver_class
{
    public static void main(String args[])
    {
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();

        while(t-- > 0)
        {
            int n =sc.nextInt();  // taking number "n" as input
            System.out.println(new Digitcount().countDigits(n)); // prints the count of digits 
        }
    }
}


class Digitcount
{
    static int count=0;
    public static int countDigits(int n)
    {
        if(n<1)
            return 0;
        countDigits(n/10);
        count++;
        return count;
    }
}
import java.util.*;
导入java.io.*;
导入java.lang.*;
类驱动程序
{
公共静态void main(字符串参数[])
{
扫描仪sc=新的扫描仪(System.in);
int t=sc.nextInt();
而(t-->0)
{
int n=sc.nextInt();//将数字“n”作为输入
System.out.println(new Digitcount().countDigits(n));//打印数字的计数
}
}
}
类数字计数
{
静态整数计数=0;
公共静态整数位数(整数n)
{

如果(n差异是在使用一个静态变量。它将保存测试之间的结果,因此在第一个测试之后的任何测试中,它都将是不正确的。如果您有两个调用,一个接一个,如下所示:

int a = countDigits(605);    
int b = countDigits(605);

结果将是
a==3
b==6
-第一个结果将被传递到第二个调用。

但是对于第二个调用,静态变量计数不会被重新赋值为零。函数调用是在main方法的另一个类中进行的。我已经重新编译了我程序的整个代码。@dFuse\u mArv这就是静态变量-在程序的整个生命周期内,它在函数调用之间保持状态。分配的0仅在第一次运行时存在。如果要在以后将其更改回0,则必须在其他地方显式调用
count=0
-静态变量的初始化仅在程序的“生命周期”中执行一次。
int a = countDigits(605);    
int b = countDigits(605);