我想要做的就是使getLastElement(char [] array)使用递归返回数组的最后一个元素。此方法只能通过使用array [0]访问索引0。 我可以使用Arrays.copyOfrange。 我只能修改isSymmetric内部的代码和getLastElement内部的代码。
我已经尝试了以下方法来访问索引0,但是在查找数组的最后一个元素时遇到了问题。
代码:
public static char getLastElement(char[] array) {
if (array == null || array.length == 0)
throw new NullPointerException();
if(array.length == 1) {
return array[0];
} else {
return getLastElement(Arrays.copyOfRange(array, 1, array.length));
}
}
public static boolean isSymmetric(char[] array) {
if (array == null)
throw new NullPointerException("Null argument.");
if(array.length <= 1) return true;
if(getLastElement(array) == array[array.length -1])
return isSymmetric(Arrays.copyOfRange(array, 1, array.length-1));
return false;
}
}
我只希望它返回数组的最后一个元素,并且希望它只能访问array [0]。
答案 0 :(得分:1)
选中此一项:
public static char getLastElement(char[] array) {
//CANNOT be modified
if (array == null || array.length == 0)
throw new NullPointerException();
//This code can be modified
if(array.length == 1) {
return array[0];
} else {
return getLastElement(Arrays.copyOfRange(array, 1, array.length));
}
}
如果数组只有一个元素,我们将其返回。否则,我们将在前一个数组的索引1处传递数组开始的数组副本。
答案 1 :(得分:0)
public static char getLastElement(char[] array) {
//CANNOT be modified
if (array == null || array.length == 0)
throw new NullPointerException();
//This code can be modified
try{
return getLastElement(Arrays.copyOfRange(array,1,array.length));
}catch (NullPointerException ex){
return array[0];
}
}
它不适用于空数组-然后将抛出空指针,但我想还可以。我已经假设您不能将数组的长度用于不同的用途,然后使用copyOfRange
答案 2 :(得分:0)
在isSymmetric
函数的第4行中有一个错误。
将if(getLastElement(array) == array[array.length -1])
更改为if(getLastElement(array) == array[0])
答案 3 :(得分:0)
我不确定您为什么需要复制任何内容。只需增加每次递归的索引
public static char getLastElement(char[] array) {
if(array == null) throw new RuntimeException("array should be initialized");
return getLastElement(array, 0);
}
private static char getLastElement(char array, int index) {
if(index == array.size() - 1) {
return array[index];
}
return getLastElement(array, index + 1);
}