JAVA递归不能退出问题(高分求救)

来源:百度知道 编辑:UC知道 时间:2024/07/05 08:11:23
我写了一个JAVA递归算法问题,我想让他在满足条件的时候退出这个递归方法,我用return退出这个方法,但是不行,每次他要把递归循环执行完后才能退出这个方法,但是到这个时候我以前得到的那个对象已经丢失了。比如:
private ResultMapping getRecord(A a,B b)throws Exception{
List list = 执行数据库操作(b) //把b对象传进去
for(循环取出该list){
if(满足条件)
return 一个对象;
}
List list1 = 执行数据库操作(b) //把b对象传进去
for(循环取出该list1){

getRecord(对象1,对象2);
}
return null ;
}

里面的细节大家不要归咎,我这里只是表达这个递归算法的流程,每次我在上面的那个循环return后,他又开始执行到 getRecord(对象1,对象2);
这个递归,请高手指点,非常感谢。如果答案满意,我的这点分都是你的了,太谢谢了!

private ResultMapping getRecord(A a,B b)throws Exception{
List list = 执行数据库操作(b) //把b对象传进去
for(循环取出该list){
if(满足条件)
return 一个对象;
}
List list1 = 执行数据库操作(b) //把b对象传进去
for(循环取出该list1){

getRecord(对象1,对象2); ---------->这句改为return getRecord(对象1,对象2); 试试搂主
}
return null ;
}

※递归方法的三个要素:
1.具有返回值,且返回类型跟参数类型相容.
2.具有结束条件.
3.自身调用.
这是我总结的递归三要素,你满足了2,3条但第1条好像没有满足.
第一.没有正确的返回值,不管你的getRecord(对象1,对象2)结果是什么,只要第一步没有找到满足条件的对象(即没有执行每一个循环的return语句,那么你的以后步的调用都会返回最后一个return null;你可以试一楼说的方法改为return getRecord().
第二.因为不知你的算法,对象1和对象2不知道是不是参数A和B的类型,也许方法递归调用多次后他们的类型不再兼容了即还要看看A,B,对象1 ,对象2是不是具有能递归调用的层次性

哪里是高分咯