Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Arraylist和递归实现_Java_Arrays_Recursion_Arraylist - Fatal编程技术网

Java Arraylist和递归实现

Java Arraylist和递归实现,java,arrays,recursion,arraylist,Java,Arrays,Recursion,Arraylist,我试图概述一个函数的java递归实现,如果列表中的所有元素都是一位数,则该函数返回true(即,您的程序看起来很好,唯一的问题是当遇到第一个元素>=10时,您应该立即返回false,当列表大小为0时,返回true。修改如下所示: static boolean allSingleDigit(List<Integer> list) { if (list.size() == 0) return true; int first = list.remove(0); if

我试图概述一个函数的java递归实现,如果列表中的所有元素都是一位数,则该函数返回true(即,您的程序看起来很好,唯一的问题是当遇到第一个元素
>=10
时,您应该立即返回
false
,当列表大小为
0
时,返回
true
。修改如下所示:

static boolean allSingleDigit(List<Integer> list) {
  if (list.size() == 0)
    return true;

  int first = list.remove(0);

  if (first == null || first >= 10)
    return false;
  else
    return allSingleDigit(list);

}
静态布尔AllSingleDigital(列表){
if(list.size()==0)
返回true;
int first=list.remove(0);
if(first==null | | first>=10)
返回false;
其他的
返回所有单位数(列表);
}

您可以通过使用泛型
List
和直接使用
List
中的
remove()
方法对其进行优化,使其更简洁。我还添加了missing
null
检查。

我认为您可能希望稍微翻转逻辑,以便仅当数组中没有元素时,它才会返回true

static boolean allSingleDigit(ArrayList list) {
if (list.size() == 0)
    return true;
else {
    int first = (Integer) list.get(0);
    list.remove(0);

    if (first < 10)
        return allSingleDigit(list);
    else
        return false
}
静态布尔AllSingleDigital(ArrayList列表){
if(list.size()==0)
返回true;
否则{
int first=(整数)list.get(0);
列表。删除(0);
如果(第一次<10)
返回所有单位数(列表);
其他的
返回错误
}

我想这就是你想要的方法

static boolean allSingleDigit(ArrayList list) {
    if (list.size() == 0)
        return true;
    else {
        int first = (Integer) list.get(0);
        list.remove(0);

        if (first >= 10)
            return false;
        else
            return allSingleDigit(list);
    }

}

我刚刚更改了您的代码。

我将其更改为if(first>=10)return false;else return allsingledigital(list);}现在我一直都得到false…对不起,我错过了first
if
子句。更新了它。噢,不,它现在正在工作。我一开始就忘了返回true。
static boolean allSingleDigit(ArrayList list) {
    if (list.size() == 0)
        return true;
    else {
        int first = (Integer) list.get(0);
        list.remove(0);

        if (first >= 10)
            return false;
        else
            return allSingleDigit(list);
    }

}