老师,用嵌套循环求阶乘的和。结果不对,哪里错了?谢谢!

老师,用嵌套循环求阶乘的和。结果不对,哪里错了?谢谢!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class FacDemo {
    // 方法不能嵌套定义
    // 求阶乘的定义
    public int fac(int n) {
        int s=1,sum=0;
        for(int j=1;j<=n;j++) {
            for(int i=1;i<=n;i++) {
            s=s*i;
            sum=sum+s; 
            }
             
        }
        return sum;
    }
    public static void main(String[] args) {
        FacDemo fa = new FacDemo();
        int sum = fa.fac(2);
        System.out.println(sum);
 
    }
 
}


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,如果使用嵌套循环求阶乘,建议如下修改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 求阶乘的定义
        public int fac(int n) {
            int s=1,sum=0;
            for(int j=1;j<=n;j++) {
                s=1;
                for(int i=1;i<=n;i++) {
                    s=s*i;              
                }
                sum=sum+s;  
                  
            }
            return s;
        }
    

对应在测试方法中

1
2
3
4
5
public static void main(String[] args) {
     Test01 fa = new Test01();  //这里老师的测试类名是Test01哦!
     int sum = fa.fac(5);
     System.out.println(sum);
}

注意将for循环中i的循环在一遍循环完成后,再进行加法运算!

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕小班 2019-06-05 15:42:08

同学你好,阶乘是所有数据依次想乘,而不是每次的值相加,并且同学使用两层循环是什么意思呐,每次的值都乘或者加两边吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Test01 {   
        // 方法不能嵌套定义
        // 求阶乘的定义
        public int fac(int n) {
            int s=1,sum=0;
            for(int j=1;j<=n;j++) {
                /*for(int i=1;i<=n;i++) {
                s=s*i;
                sum=sum+s;  
                }*/
                s*=j;
                  
            }
            return s;
        }
         
    public static void main(String[] args) {
 
           Test01 fa = new Test01();
            int sum = fa.fac(5);
            System.out.println(sum);
     }
}

运行效果为:   (5的阶乘为120)

http://img1.sycdn.imooc.com//climg/5cf77215000186c502890142.jpg

所以这里建议同学按照课程所示来求阶乘哦!

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕移动ttong #1
    不是,我想复习一下前面的for循环嵌套,结果没写出来。就是用嵌套循环求阶乘和。 public class FacDemo { // 方法不能嵌套定义 // 求阶乘的定义 public int fac(int n) { int s=1,sum=0; for(int j=1;j<=n;j++) { s=1; for(int i=1;i<=j;i++) { s=s*i; } sum=sum+s; } return sum; } public static void main(String[] args) { FacDemo fa = new FacDemo(); int sum = fa.fac(3); System.out.println(sum); } } 这样对吗?
    2019-06-05 15:46:07
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码