java递归的格式问题

珠江的风 2013-05-20 09:19:44
最近遇到递归的问题很多,在网上查了一下,发现有如下格式:

权限修饰符+(static)+函数返回类型+函数名(参数列表){

if(递归结束条件){递归结束终值赋值语句;return 返回值;}

else{累计计算+循环调用函数语句;

return 返回值;}

}

上面的的"递归结束终值赋值语句"和"累计计算+循环调用函数语句"是什么意思,递归函数一定是static方法吗?

然后研究了一下下面这道题:

public static List<Integer> max5(List<Integer> lst) {
if (lst.size() <= 5)
return lst;

int a = lst.remove(0);

List<Integer> b = max5(lst);

for (int i = 0; i < b.size(); i++) {
int t = b.get(i);
if (a > t) {

b.set(i, a);
a = t;

}
}

return b;

}

public static void main(String[] args) {
List<Integer> lst = new Vector<Integer>();
lst.addAll(Arrays.asList(12, 127, 85, 66, 27, 34, 15, 344, 156, 344, 29, 47));
System.out.println(max5(lst));
System.out.println(f(5));
}

这段程序也是递归算法吧,已经出现了if关键字了,但是else关键字却没有出现,若要添加else关键字,要怎么添加,请高手指点!!谢谢
...全文
97 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
oh_Maxy 2013-05-21
  • 打赏
  • 举报
回复
递归是思想,static是修饰词,两者没啥关系。 LZ说的有if没else,说的是这句吧: if (lst.size() <= 5) return lst; 这句已经暗含了else:就是不符合if,后面的操作都要进行下去的意思。
失落夏天 2013-05-20
  • 打赏
  • 举报
回复
递归不存在什么固定的格式。 如果非说存在,那么就是判断条件+调用方法本身这两个最基本的。 至于if else等等,完全可以用while等来代替。
acmly 2013-05-20
  • 打赏
  • 举报
回复
if里面直接return了就不需要再else了。其实你在return后面加上else,然后把后面所有的内容都用大括号括起来,产生的效果和现在的代码一模一样。
yanxing2012 2013-05-20
  • 打赏
  • 举报
回复
f(5)是什么,递归不一定用static,不过用static方便点,不然需要用静态对象在main()里调用,也不一定用else,题目要,目的可以说详细点

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧