递归判断程序是否有序?

public class P37_ArraySort {
public static int isArrayInSortedOrder(int[] array,int index){
if (array.length == 1) {
return 1;
}else{
return (array[index-1]<=array[index-2])?0:isArrayInSortedOrder(array,index-1);
}
}

public static void main(String[] args) {
    int[] arr=new int[]{1,3,4,6,2};
    System.out.println(isArrayInSortedOrder(arr,4));
}

}


这样写会数组下标越界,请问怎么改才能用递归判断?

array[index-1]<=array[index-2]
第一、当前位置需要判断
第二、去掉=号

改为:
array[index]<array[index-1]

public class P31_ArraySort {
    public static int isArrayInSortedOrder(int[] array,int index){
        if (array.length == 1) {
            //1个肯定有序
            return 1;
        }else{
            if (index-2>=0)
            {
                //后面小于前面,无序,返回0
                return (array[index-1]<array[index-2])?0:isArrayInSortedOrder(array,index-1);
            }else{
                //有序 返回1
                return 1;
            }
        }
    }

    public static void main(String[] args) {
        int[] arr=new int[]{1,2,3,4,6,-1};
        System.out.println(isArrayInSortedOrder(arr,6));
    }


}

每次都是传入同一个array,array.length == 1这个情况在这个数组的长度不等于1的情况下永远都不会实现。没有出口

1.这样是对的,这个复杂度为(n),应该是最优的了
2.当前位置需要判断是指:
你第一次:
int[] arr=new int[]{1,3,4,6,2};
System.out.println(isArrayInSortedOrder(arr,4));nt[] arr=new int[]{1,3,4,6,2};
这里的数组长度为5,你取了4,最后一个元素2漏掉了

修改后:
int[] arr=new int[]{1,2,3,4,6,-1};
System.out.println(isArrayInSortedOrder(arr,6));
取值6没有漏掉

这段代码是有问题的,但是网上好多这么写的,,都是互相抄的么