永发信息网

谁能帮我解释这段java阶乘代码原理

答案:2  悬赏:60  手机版
解决时间 2021-05-02 12:59
  • 提问者网友:遁入空寂
  • 2021-05-02 04:50

package fact;

public class Fact
{
public int fact(int n)
{
int i=1;
int result;
System.out.println("当前n="+n+"循环第"+i+"次");
if(n==1)
{
++i;
System.out.println("return 1");
return 1;
}
++i;
result= fact(n-1)*n;
System.out.println("\n------当前n="+n+"循环第"+i+"次"+"\n");
System.out.println("///////////当前结果"+result);
return result;
}
public static void main(String[] args)
{
Fact ft=new Fact();
System.out.println("10的阶乘是"+ft.fact(10));
}
}

输出:

当前n=10循环第1次
当前n=9循环第1次
当前n=8循环第1次
当前n=7循环第1次
当前n=6循环第1次
当前n=5循环第1次
当前n=4循环第1次
当前n=3循环第1次
当前n=2循环第1次
当前n=1循环第1次
return 1 -----在这里面就奇怪啦,为什么分两次循环,最后return啦已经为什么下面还有循环而且输出啦结果! 这时为什么 怎么也解释不通啊!

------当前n=2循环第2次

///////////当前结果2

------当前n=3循环第2次

///////////当前结果6

------当前n=4循环第2次

///////////当前结果24

------当前n=5循环第2次

///////////当前结果120

------当前n=6循环第2次

///////////当前结果720

------当前n=7循环第2次

///////////当前结果5040

------当前n=8循环第2次

///////////当前结果40320

------当前n=9循环第2次

///////////当前结果362880

------当前n=10循环第2次

///////////当前结果3628800
10的阶乘是3628800

最佳答案
  • 五星知识达人网友:往事埋风中
  • 2021-05-02 05:05
result= fact(n-1)*n;
System.out.println("\n------当前n="+n+"循环第"+i+"次"+"\n");
System.out.println("///////////当前结果"+result);
循环写错了
全部回答
  • 1楼网友:深街酒徒
  • 2021-05-02 05:24
这是典型的递归算法,
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯