首页 > 解决方案 > 如果数组是有序的,则递归布尔值

问题描述

我的任务是使用递归布尔方法来找出我给该方法的具有索引的数组是否以向上计数的方式排序。我解决了非递归任务,但我现在被困住了,因为 IDK 如何制作一个递归方法,每次都必须给出一个数组......这是我的想法

public static boolean isSortedRecursive(int[] a) {

    int k=a.length-1;
    int z=a[k];
    int v=a[k-1];

    if(z>v){

        return false;
    }

    else if(z<a.length){
        k--;
        isSortedRecursive(a);
        return true;


    }


    isSortedRecursive(a);
    //return false;

}

标签: javaarraysrecursion

解决方案


通过添加一个参数(数组的大小),您可以使其相当简单,如下所示:

public class Main {
    public static void main(String args[]) {
        // Tests
        System.out.println(isSortedRecursive(new int[] { 2, 3, 1, 4, 7, 5, 6 }, 7));
        System.out.println(isSortedRecursive(new int[] { 6, 1, 3, 5, 7, 4, 2 }, 7));
        System.out.println(isSortedRecursive(new int[] { 1, 2, 3, 4, 5, 6, 7 }, 7));
    }

    public static boolean isSortedRecursive(int[] a, int size) {
        if (a[size - 1] < a[size - 2]) {
            return false;
        }
        if (size > 2) {
            return isSortedRecursive(a, size - 1);
        }
        return true;
    }
}

输出:

false
false
true

注意:它只会返回true按升序排序的数组。


推荐阅读