java初级问题

[复制链接]
查看11 | 回复3 | 2009-7-29 23:37:33 | 显示全部楼层 |阅读模式
public int sum( int n )
{
if ( n == 0)
return 0;
else
return n + sum( n );
}
请问这是错误在哪里,怎么改?另外请问一下构造方法调用应该怎么做
能举例说明一下吗?说个复杂一点的例子;

回复

使用道具 举报

千问 | 2009-7-29 23:37:33 | 显示全部楼层
public static int sum(int n) { if (n == 0)
return 0; else
return (n--) + sum(n);}因为没有加入控制递归结束的语句,虽然有判断n==0.但是按照楼主的程序n并没有发生变化.也就无从提起n会等于0了,但是n--的操作放置的位置应该恰当,否则会造成计算结果的错误.因此如上述程序,放置位置应在return语句内,程序经测试无错误....
回复

使用道具 举报

千问 | 2009-7-29 23:37:33 | 显示全部楼层
使用递归的时候一定要注意程序出口,没什么必要的话就别使用了,递归的效率太低了,用循环来代替吧new 类名();这样就可以调用构造方法...
回复

使用道具 举报

千问 | 2009-7-29 23:37:33 | 显示全部楼层
2009-7-30完整的代码如下,你看看是不是你要的.public class MathDesign{private int defaultNum = 100;//默认求100+99+...+1的和public MathDesign(){ //默认的构造方法
sum(defaultNum);} ...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行