首页 文章

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

提问于
浏览
2

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

这里没有递归:

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

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

    • 1位数 - false

    • 2位数 - true

    • 3位数 - false

    • 4位数 - true

    • 等等

    看模式?一个数字问题的答案是 falsen+1 数字问题的答案是 n 数字问题答案的倒数 .

    既然你已经知道通过用整数除以10就可以减少一位数,你应该能够用几行代码编写上述算法的解决方案 .

  • 0

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

    • 如果数字是9或更低,则为假 .

    • 如果数字是99或更低,那是真的 .

    • 否则,除以100并检查结果是否具有偶数位数...

  • 4

    因为我们知道数字%2将返回0或1,所以我将假设您不应该使用它来确定数字是偶数还是奇数 .

    你应该设置你的基本情况(如果1然后返回false)

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

  • 0

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

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

    在上面的dasblinkenlight提到的同一行

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

相关问题