Java 计算自然数的偶数
我正在尝试编写一个方法(特别是使用递归)来返回自然数中的偶数位数。我希望使用返回类型NaturalNumber来实现这一点,以便更熟悉它。有人能给我指出正确的方向吗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
//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”是不可行的,我相信