我目前正在开发一个程序来给出来自用户的整数输入,只打印那些包含数字1 2或3的程序。这是我的代码到目前为止:
public static void main(String[] args){
Scanner s = new Scanner(System.in);
int[] x=new int[5];
System.out.println("Enter 5 integers: ");
for(int i=0; i<x.length;i++) {
x[i]=s.nextInt();
boolean temp=recursion(x[i]);
if(temp==true) {
System.out.print(x[i]);
}
}
}
public static boolean recursion(int y) {
if(y%10==1 || y%10==2 || y%10==3) {
return true;
}
else if(y%10==0) {
return false;
}
else {
int remain=y/10;
recursion(remain);
}
}
所以我的方法非常简单,我使用简单的bool递归来返回true或false,如果它包含1 2或3则为true,否则为false。我遇到的问题是我在递归其他语句中没有返回任何内容。我知道我必须返回一些东西,但不知道该返回什么或者是否有必要。我可以改变什么来使这项工作?
答案 0 :(得分:2)
我认为你必须要做
return recursion(remain);
答案 1 :(得分:2)
你递归的基本情况有点偏,所以在声明中
USER_DOES_NOT_BELONG_TO_SPECIFIED_ACCOUNT
,数字100会导致失败,即使它有效。你希望你的假基础案例实际上是else if(y%10==0)
,这意味着你已经完成了整个数字。解决方案看起来像:
else if (y == 0)
编辑:在数字上调用绝对值也可以使其适用于负数,但是你可以在传入的整数上调用abs来达到相同的效果。
答案 2 :(得分:0)
使用以下代码,希望这会有所帮助。
public static boolean recursion(int y) {
if(y%10==1 || y%10==2 || y%10==3) {
return true;
}
else if(y%10==0) {
return false;
}
else {
int remain=y/10;
return recursion(remain);
}
}