使用递归检查整数的位数是否均匀

时间:2018-01-09 17:02:13

标签: java recursion

需要检查整数的位数是否为递归。

这里没有递归:

private static boolean jeParanBrCifara(int n) {
    int brojCifara = String.valueOf(n).length();
    if (brojCifara % 2 == 0) 
        return true;
    else 
        return false;
}

这里是使用递归计算数字的代码

public  int DigitsCount(int Number) {    
    if (Number > 0) {
        Count = Count + 1;
        DigitsCount(Number / 10);
    }
    return Count;
}

但是如何制作一个递归方法,该方法将整数作为参数并返回true(如果位数是偶数)为false?

我这样做了,但不确定它是否正确:

static int Count = 0;
public static boolean isEven(int Number) {
    boolean even = false;
    if (Number > 0) {
        Count = Count + 1;
        isEven(Number / 10);
    }
    if (Count % 2 == 0) {
        even = true;
    }
    return even;
}

任何提示/提示?

5 个答案:

答案 0 :(得分:4)

考虑增加位数时答案如何变化:

  • 1位数 - true
  • 2位数 - false
  • 3位数 - true
  • 4位数 - false

看模式?一位数问题的答案为n+1n位数问题的答案与{{1}}位数问题的答案相反。

由于你已经知道将数字减少一个是用整数除以10来完成的,你应该能够用几行代码编写上述算法的解决方案。

答案 1 :(得分:3)

递归是根据自身来表达函数,但是对于较小的问题。像这样:

  • 如果数字是9或更低,那就错了。
  • 如果数字是99或更低,那就是真的。
  • 否则,除以100并检查结果是否具有偶数位数......

答案 2 :(得分:0)

由于我们知道数字%2将返回0或1,我将假设您不应该使用它来确定数字是偶数还是奇数。

您应该设置基本情况(如果为1,则返回false)

然后检查n-1是偶数还是奇数并返回相反的结果。

答案 3 :(得分:0)

让我们假设我们只处理正数,可以这样写:

public static boolean IsEven(int n)
{
    return n >= 10
        ? !IsEven(n / 10)
        : false;
}

答案 4 :(得分:0)

与上面的dasblinkenlight提到的行相同

public static boolean isEven(int num){
        if(num>=10){
            return !isEven(num/10);
        }
        return false;
    }