需要检查整数的位数是否为递归。
这里没有递归:
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;
}
任何提示/提示?
答案 0 :(得分:4)
考虑增加位数时答案如何变化:
true
false
true
false
看模式?一位数问题的答案为n+1
,n
位数问题的答案与{{1}}位数问题的答案相反。
由于你已经知道将数字减少一个是用整数除以10来完成的,你应该能够用几行代码编写上述算法的解决方案。
答案 1 :(得分:3)
递归是根据自身来表达函数,但是对于较小的问题。像这样:
答案 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;
}