【发布时间】:2020-04-25 07:04:07
【问题描述】:
我对如何递归编写这段代码感到很困惑。我必须创建一个方法来确定是否有两个连续数字在数组的特定范围内相等。
应该返回 true 的数组示例如下:3、2、2、1 其中 i=0 和 j=3。
到目前为止,这是我的代码,但它没有正确实现问题。
private static boolean problem1(int[] arr, int i, int j)
{
int[] newArray = Arrays.copyOfRange(arr, i, j+1); //Create a new array that only contains the specific given range
for(int x = i; x < newArray.length; x++){
int y = (x+1);
if(newArray[x]==newArray[y]){
return true;
}
}
return false;
}
【问题讨论】:
-
1) 您的解决方案不是递归的。 2)适当的解决方案不需要复制数组。 3) 适当的解决方案不会使用
for或while循环。递归将(实际上)进行循环。 -
这似乎是一个关于递归的家庭作业问题。你了解递归的原理吗?似乎您正在尝试使用迭代解决方案而不是递归解决方案来解决问题。另外,对于它的价值,请注意,在您的循环中,如果
x=newArray.length-1并且您设置y=x+1然后newArray[y]将等同于执行newArray[newArray.length]并且会给您一个ArrayIndexOutOfBoundsException。 -
非常感谢所有评论的人,非常感谢您的帮助!
标签: java arrays recursion range