永发信息网

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

答案:2  悬赏:60  手机版
解决时间 2021-05-02 12:59

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

最佳答案
result= fact(n-1)*n;
System.out.println("\n------当前n="+n+"循环第"+i+"次"+"\n");
System.out.println("///////////当前结果"+result);
循环写错了
全部回答
这是典型的递归算法,
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我是天龙八部86级
谁知到加州苹果A45的音质如何啊
我是1990年04月20我想占卜爱情
转载的问题怎么删除
我到底是个啥样人?
大学艺术生是选用笔记本电脑为好,还是台式电
有谁知道英文DJ的名字?
浦北早上哪有三明治
清甘茶行在哪里啊,我有事要去这个地方
魔兽世界德鲁伊的野性天赋
暗黑破坏神单机版忘记是那个版本啦 里面有好
员工工作表现差的评语,我想写一个优秀员工的
我应该要买哪台手机吖?
出现非法关机N次用卡吧+瑞星杀毒后还是一样的
成考和自考选择哪个更好?
推荐资讯
我的小说被网站自动发表了,可是我现在还不想
心情如天气的句子,形容心情好,天气的句子
地下城里COF的问题!
暴雨来临前期的预兆是?
《四大名捕》的主题曲 —— 爱火 哪能找到啊
车饰界汽车美容装饰会所在什么地方啊,我要过
杭州公交车的资费是怎么样的呀?
爱果乐这个牌子怎么样,车仆牌白色硬蜡质量好
洛奇经典台词,洛奇6 英文台词 但是只有当你开
世界上什么人睡得长
该死的温柔是谁唱的?
管理好友QQ加友的时间
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?