Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算自然数的偶数_Java_Recursion - Fatal编程技术网

Java 计算自然数的偶数

Java 计算自然数的偶数,java,recursion,Java,Recursion,我正在尝试编写一个方法(特别是使用递归)来返回自然数中的偶数位数。我希望使用返回类型NaturalNumber来实现这一点,以便更熟悉它。有人能给我指出正确的方向吗 //private static NaturalNumber countEvenDigits(NaturalNumber num) //initalize a NaturalNumber--count--to zero //while loop with condition that the num is not 0 //in

我正在尝试编写一个方法(特别是使用递归)来返回自然数中的偶数位数。我希望使用返回类型NaturalNumber来实现这一点,以便更熟悉它。有人能给我指出正确的方向吗

//private static NaturalNumber countEvenDigits(NaturalNumber num)

//initalize a NaturalNumber--count--to zero

//while loop with condition that the num is not 0

//initialize a NaturalNumber--k--to num.divideBy10 so that it is equal to the last digit in the natural number

//if statement-- k mod 2 is equal to 0

//increment the NaturalNumber count

//end if statement

//call this function recursively

//end while statement

//return count

然而,我当前的实现只返回0,我在错误地思考什么呢?

首先,您在Java中发布了这个,所以我猜自然数是整数(或int基元)

然后,如果函数调用“end requirement”(结束要求)得到满足(数字!=0),那么您的函数需要在开始时进行检查

如果您的号码是!=0,您实际上会检查它是偶数还是奇数。在这个检查之后,您需要记住(count++),并将递归方法调用的返回值添加到您的count上,但是最后一个数字被删除了,因为您已经在这个调用中检查过了。(计数+=计数偶数位数(自然数/10))。只要有更多的数字,它就应该调用自己,最后,它将进入退出的初始if()

/** http://stackoverflow.com/q/36085564/6077352 */
public class NaturalNumber {
    public static void main(String[] args) {
        int naturalNumber = 123456789;
        System.out.println(countEvenDigits(naturalNumber));
    }
    private static int countEvenDigits(int naturalNumber) {
        int count = 0;
        if (naturalNumber != 0) {
            if (naturalNumber % 2 == 0) {
                count = count + 1;
            }
            count = count + countEvenDigits(naturalNumber / 10);
        }
        return count;
}   }
示例输出:

四,


NaturalNumber不是标准的Java类。我会用int开头。只需使用%10获取最后一位数字,然后检查它是否为偶数,然后返回1+f(num/10)。否则,返回的f(num/10)必须是mod 10,如果要得到最后一位数字,则不能除以10。123/10=12,123%10=3我知道int会更容易,但我想做自然数来锻炼。我返回的是一个自然数,所以“+1”是不可行的,我相信