【发布时间】:2019-01-21 20:49:29
【问题描述】:
我正在创建一个采用数字列表和索引的方法。
如果索引后面有一个数字是第一个数字的六倍,则返回 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 在列表中。但是,即使 next 语句为 true 并且应该停止该方法,它仍然返回 false?
这必须通过递归来完成。
编辑:我必须把'return false;'最后,没有它,它不会让我。但是,我看不出它是如何到达那里的,因为总会有递归调用。
【问题讨论】:
-
也许返回你递归调用的结果,而不是一堆
return false/return true;? -
递归是对自身的调用。在您的情况下,在某些时候您的方法应该调用自己。您需要确保您也可以满足您的结束条件(因此在某些时候返回 false 或 true)。我的猜测是您可能希望在测试结束条件后返回对您的方法的调用 :) (顺便说一句,根据您的初始参数,您可能会收到一个 stackoverflow 错误,这里有点“元”:D)