java 递归调用

zhengdm 2010-03-09 09:41:40
在java中使用递归调用必须使用if分支语句吗? 为什么不用就报错,用了就好?(新人,求前辈解答)
public static void main(String[] args){
int sun=0;
sun = fun(100);
System.out.println(sun);
}

public static int fun(int temp){
if(temp==1){
return 1;
}else
return temp+fun(temp-1);
}

能运行
public static void main(String[] args){
int sun=0;
sun = fun(100);
System.out.println(sun);
}

public static int fun(int temp){
return temp+fun(temp-1);
}

这样就不行了
...全文
58 3 打赏 收藏 转发到动态 举报
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sjyjia105 2010-03-09
  • 打赏
  • 举报
回复
递归两个重要必要条件:
1 递归结束条件
2 核心表达式
Dazzlingwinter 2010-03-09
  • 打赏
  • 举报
回复
呃,这个递归要有一个原始解得,也就是当参数满足一定条件时要跳出递归(if n == 1 return 1),不然就无限循环了...
wibnmo 2010-03-09
  • 打赏
  • 举报
回复
temp==1是中止程序的条件,如果没有这个条件程序会一直运行,抛出java.lang.StackOverflowError异常。

100+fun(99) 99+fun(98) 98+(97) ... 1+(0) 0+(-1) ...

一直到栈溢出。

跟有没有if分支语句没关系,用do...while当然也可以,主要是设置程序中止的条件。
相关推荐

62,568

社区成员

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