java递归调用问题

publicclassTest{publicstaticvoidmain(Stringarg[]){System.out.println(Method(5));}publ... public class Test {
public static void main(String arg[]){
System.out.println(Method(5));
}
public static int Method(int n){
if(n==1)
return 1;
else
return n*Method(n-1);
}
}
这个是算5的阶乘的 但我不能白她是怎么循环的 那位高手给小弟指点指点
我不明白为啥最好是5*4*3*2*1
展开
 我来答
风云灬焰
2009-08-27 · 超过19用户采纳过TA的回答
知道答主
回答量:138
采纳率:0%
帮助的人:0
展开全部
这个调用就是你传的参数在自减,然后到了等于1的时候就开始返回了。所以你的参数自减几次为1就循环几次
来味嫣闪1e
推荐于2016-01-05 · TA获得超过320个赞
知道小有建树答主
回答量:231
采纳率:0%
帮助的人:83.9万
展开全部
当n=1时返回指为1,当n=5时,返回什么呢?
5*Method(5-1),Method(5-1)又等于什么呢?
=(5-1)*Method(5-1-1)以此类推进行递归,知道Method()括号里面的变量为1就给出结果,但是此方法递归只能算到12!这是因为递归需要很大的memory而且int型也支持不了大整数的运算。
5*4*3*2*1不就是按照阶乘运算法来算的吗,当然如果你想也可以用递减的方法算1*2*3*4*5,但是如果你要算高精密的数字还是用从大到小的顺序~
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
DKTFN
2009-08-27 · 超过19用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:0
展开全部
递归的思想是把问题分解,直到问题足够小,能够直接解决。
可以这样设计递归函数:
假设Method(n)函数的功能是计算n的阶乘。
那么现在来设计Method的实现。
首先如果参数等于1,则可以直接返回1的阶乘,即1。
如果n不等于1,那么,既然已经假设Method能计算n的阶乘,则我们可以Method先计算n-1的阶乘,然后哦乘以n级为答案。于是就得出了搂主的那个函数。
对于“假设Method(n)函数的功能是计算n的阶乘”这点,是基于Method确实能计算1的阶乘,而n的阶乘又能转换成计算n-1的阶乘乘以n,即能不断的将问题分解,直到问题规模小到我们能处理。这里指计算1的阶乘。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式