Java Arraylist和递归实现
我试图概述一个函数的java递归实现,如果列表中的所有元素都是一位数,则该函数返回true(即,您的程序看起来很好,唯一的问题是当遇到第一个元素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
>=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()
方法对其进行优化,使其更简洁。我还添加了missingnull
检查。我认为您可能希望稍微翻转逻辑,以便仅当数组中没有元素时,它才会返回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);
}
}