我正在尝试创建一个方法来检查数组以递归方式增加元素。如果所有元素的递增顺序,则应返回True
。我比较IndexOutOfBoundsException
时得到arr[i+1]
。关于如何使其发挥作用的任何想法。
public static boolean isAscending(int[] array) {
int n = array.length - 1;
if(array.length == 0 || array.length == 1 || n == 1)
return true;
else if (array[n] <= array[n-1]){
return false;
}
if isAscending(array);
return true;
}
答案 0 :(得分:0)
除此之外我没有看到任何arr[i+1]
,你必须减少你递归调用的数组的大小(并删除最后;
后的if
),否则你会一遍又一遍地使用相同的输入调用方法。
答案 1 :(得分:0)
您需要跟踪您当前正在查看的索引。现在,您始终在查看数组中的最后一个索引。此外,您目前不检查前两个索引是否按升序排列,因为您当前n == 1
而不是n == 0
时停止。
public static boolean isAscending( int[] array ){ return isAscendingHelper( array, array.length - 1 ); }
private static boolean isAscendingHelper( int[] array, int index )
{
if( index <= 0 )
return true;
else if( array[index] <= array[index-1] )
return false;
else
return isAscendingHelper( array, index - 1 );
}
答案 2 :(得分:0)
如果您需要维护原始方法签名:
public static boolean isAscending(int[] array) {
if (array.length == 0 || array.length == 1) {
return true;
}
int[] temp = Arrays.copyOfRange(array, 1, array.length);
if (array[0] < temp[0]) {
return isAscending(temp);
}
return false;
}