这是我的代码,我想知道我做得如何,以简化这一点?我只是想尽我所能,以更好地了解Java。
import java.util.Scanner;
public class LabProgram {
/* TODO: Write recursive digitCount() method here. */
public static int digitCount(int userNum) {
if (userNum == 0) {
return 0;
}
return 1 + digitCount(userNum/10);
}
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
int num, digits;
num = scnr.nextInt();
digits = digitCount(num);
System.out.println(digits);
}
}
1条答案
按热度按时间tag5nh1u1#
首先,如果输入为
0
,则代码无法工作。当传入
0
时,您的函数立即返回0
位数,这是错误的。输入数字0
由个位数组成,因此结果应该是1
。其次,可以使用tail-recursion优化递归函数。