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);