需要检查整数的位数是否为递归 .
这里没有递归:
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 回答
考虑当您增加位数时答案如何变化:
1位数 -
false
2位数 -
true
3位数 -
false
4位数 -
true
等等
看模式?一个数字问题的答案是
false
,n+1
数字问题的答案是n
数字问题答案的倒数 .既然你已经知道通过用整数除以10就可以减少一位数,你应该能够用几行代码编写上述算法的解决方案 .
递归是根据自身来表达函数,但是对于较小的问题 . 像这样的东西:
如果数字是9或更低,则为假 .
如果数字是99或更低,那是真的 .
否则,除以100并检查结果是否具有偶数位数...
因为我们知道数字%2将返回0或1,所以我将假设您不应该使用它来确定数字是偶数还是奇数 .
你应该设置你的基本情况(如果1然后返回false)
然后检查n-1是偶数还是奇数并返回相反的结果 .
让我们假设我们只处理正数,这样的事情可以写成:
在上面的dasblinkenlight提到的同一行