我正在创建一种方法,该方法采用数字列表和索引。
如果索引后面有一个数字是第一个数字的六倍,则返回true。否则,它返回false。
public static boolean firstElementMultiple(int []Numbers, int index) {
System.out.println(Numbers[index]);
if ((Numbers[0]*6)==Numbers[index]){
System.out.println("Yep");
return true;
}
if (index+1 >= Numbers.length){
return false;
}
firstElementMultiple(Numbers, index+1);
return false;
列表为{5,6,7,30},索引为1,即使列表中有30个,也会返回false。
6 7 30 是的
已打印,表明我确实知道列表中有30个。但是,即使下一条语句为true,它仍然返回false,应该停止该方法吗?
这必须通过递归完成。
edit:我必须把'return false;'放进去。最后,没有它,它不会让我。但是,我看不到它怎么能到达那里,因为一直有一个递归调用。
答案 0 :(得分:1)
firstElementMultiple(Numbers, index+1);
return false;
这是您方法的结尾。这就是它的作用。它说:“打电话给firstElementMultiple
继续寻找我们想要的值。完成查找后,请完全忽略是否找到它并返回false
。”
鉴于此,无论我们是否找到该元素,如何修复它以完成您想要的工作,即返回?
答案 1 :(得分:1)
因为最后,无论您在进一步的计算中得到什么,您都将在递归函数中返回false。您应该将代码更改为此:
public static boolean firstElementMultiple(int []Numbers, int index) {
System.out.println(Numbers[index]);
if ((Numbers[0]*6)==Numbers[index]){
System.out.println("Yep");
return true;
}
if (index+1 >= Numbers.length){
return false;
}
return firstElementMultiple(Numbers, index+1);
}
基本上您需要更改
firstElementMultiple(Numbers, index+1);
return false;
到
return firstElementMultiple(Numbers, index+1);