递归方法,返回给定整数的位数

时间:2018-04-30 12:00:50

标签: java recursion digits

需要编写一个返回整数的位数的方法。

起初我使用迭代方法完成它并且一切工作正常,但是,当我想使用递归编辑代码时,我总是陷入第一次计数并且无法弄清楚原因。 非常感谢任何帮助..

public static int numberLength(int n) {
    if (n < 0) {
      n *= (-1);
    } else if (n == 0) {
      return 1;
    }

    int digits = 0;
    if (n > 0) {
      digits += 1;
      numberLength(n / 10);
    }
    return digits;

3 个答案:

答案 0 :(得分:2)

在递归方法中,您需要根据减小输入值的大小返回一些值,并将其与当前计数结合起来,例如。

public static int numberLength(int n){ 
   if(n < 10){ 
     return 1; 
   } 

   return 1 + (numberLength(n/10)); //This line combines the result
}

答案 1 :(得分:0)

问题在于您放弃了numberLength(n / 10);

的结果

您可能打算输入:

int digits = 0;
if (n > 0) {
  return 1 + numberLength(n / 10);
}
return digits;

答案 2 :(得分:0)

可能的解决方案可能如下所示:

    public static int numberLength(int n){

    if(n < 0){
        return numberLength(-n);
    }

    else if(n == 0){
        return 0;
    }
    else{
        return 1 + numberLength(n/10);
    }
}

public static void main(String[] args){
    System.out.println(numberLength(-152555)); //returns 6
}