构造函数求返回值

publicclassFg{publicstaticintf(intn){if(n%2==0||n<3)returnn;elsereturn3*f(n/2)+2*f(n+... public class Fg{

public static int f(int n){
if(n %2==0 || n<3)
return n;
else
return 3*f(n/2) +2*f(n+3);
}

public static int g(int n) {
try {
return 4*g((n+1)/(n-2));
} catch(Exception e){
return n;
}
}
}
***********************************************************************

public class solo{
public static void main(String[] args){
Fg f = new Fg();
int ri = Fg.g(3);
System.out.println(ri);
}
}

----------------------------------------------------------------------
请问为什么为输入为32呢?
哪位仁兄能帮我解答一下?感谢
展开
 我来答
蝶儿忙
2011-04-03 · TA获得超过1.1万个赞
知道大有可为答主
回答量:2629
采纳率:0%
帮助的人:0
展开全部
递归调用
第一次调用g(3)
g(3)调用g((3+1)/(3-2)) 也就是调用g(4)
g(4)调用g((4+1)/(4-2)) 也就是调用g(2)
g(2)调用g((2+1)/(2-2)) 此处抛出除0异常 执行到catch代码块 return 2
依次向上返回
g(2) return 2
g(4) return 4*2
g(3) return 4*4*2
最后结果为 32
wrist356
2011-04-03 · TA获得超过583个赞
知道答主
回答量:274
采纳率:0%
帮助的人:197万
展开全部
当函数的返回值为对象值时,比如定义对象:Cat copyFrisky;当函数返回时:return copyFrisky; copyFrisky对象超出作用区域,这时会调用复制构造函数创建该
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
亿彦任Y
2011-04-03 · 超过16用户采纳过TA的回答
知道答主
回答量:44
采纳率:100%
帮助的人:38.8万
展开全部
你这个程序写的很幽默 啊。首先,你这个里面没有构造函数,其次。你这个是递归调用。但是没跳出递归的条件。系统抛异常了。返回一个值。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cainiaokan
2011-04-03 · TA获得超过2917个赞
知道小有建树答主
回答量:651
采纳率:66%
帮助的人:612万
展开全部
堆栈溢出了。这个递归方法public static int g(int n)理论上永远不会执行结束,但是java虚拟机的堆栈空间大小的确定的,递归到某个程度的时候,堆栈空间就会用尽,将溢出,因此方法内部抛出堆栈溢出这个运行时异常,程序内部捕捉到了这个异常,然后返回了异常发生时n的值大小
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-04-03
展开全部
程序只在g方法中运行,在g中又调用g方法,当n==2时,g出现异常,return 回n
实际运行过程是:4*g(4)=4*4*g(2),最后n==2,所以ri==32
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式