A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

昨天老师留了一题,求"水仙花数",昨天我也自己顺利把代码敲了出来,今天上课发现老师跟我的不一样,但是我的代码也能完成需求;请各位大神从各个角度分析下子,两种方法各自的优缺点:
老师的:
for(int num=100;num<=999;num++)
{
        int a=num%10;
        int b=num/10%10;
        int c=num/10/10%10;
        if(a*a*a+b*b*b+c*c*c==100*c+10*b+a)
        {
                System.out.print(100*c+10*b+a+"\t");
        }
}


我自己的:
for(int a=1;a<=9;a++)
{
        for(int b=0;b<=9;b++)
        {
                for(int c=0;c<=9;c++)
                {
                        if(a*a*a+b*b*b+c*c*c==100*a+10*b+c)
                        {
                                System.out.print(100*a+10*b+c+"  ");
                        }
                }
        }
}


还请各位大神不吝赐教!!!!!

18 个回复

倒序浏览
这要是1w以内的水仙花数你要写多少个for循环
回复 使用道具 举报
不知楼主有注意到毕老师说写代码的一些注意点。程序是让人看的,所以要尽可能的易读,代码尽可能的简化。你的for循环嵌套层数太多,会让人晕。另外for循环嵌套一般二层,不会超过三层。在视频中,我没有看到过老师所写的代码超过二层的。for循环最大的目的是让人找出一些规律。但对于咱们初学者来说,只要能把程序写出来就好,代码简化是在写出程序的基础上做的提高。
回复 使用道具 举报
同意楼上的,这是效率的问题。
回复 使用道具 举报
你的代码虽说能解决问题,但是阅读性很差,同时如果用你这种方式搞开发,效率极低。。。
所以写代码的时候一方面考虑阅读性,一方面也要考虑写代码的效率
回复 使用道具 举报
老天你是要嵌套多少个for循环,for循环多了很影响程序的执行速度,而且阅读性真心不好,工作中要是写这样代码基本会被项目经理骂死
回复 使用道具 举报
饥渴ing 发表于 2014-6-1 00:01
这要是1w以内的水仙花数你要写多少个for循环

感谢,明白了:)
回复 使用道具 举报
学习学习{:3_53:}
回复 使用道具 举报
提菩--空 发表于 2014-6-1 00:27
不知楼主有注意到毕老师说写代码的一些注意点。程序是让人看的,所以要尽可能的易读,代码尽可能的简化。你 ...

感谢感谢:lol,我会继续努力学,努力改
回复 使用道具 举报
茂子 发表于 2014-6-1 02:26
你的代码虽说能解决问题,但是阅读性很差,同时如果用你这种方式搞开发,效率极低。。。
所以写代码的时候 ...

谢谢!我现在想通了!一开始我以为水仙花数只是3位数,昨天百度一下才知道可以是n位数!那样我的方法局限性就出来了,
回复 使用道具 举报
More 发表于 2014-6-1 08:50
老天你是要嵌套多少个for循环,for循环多了很影响程序的执行速度,而且阅读性真心不好,工作中要是写这样代 ...

:handshake 恩恩,现在已经明白了,感谢建议
回复 使用道具 举报
时间复杂度问题,嵌套循环越多复杂度就越高,运行时间就越长。以后写代码尽量避免循环嵌套。
回复 使用道具 举报
王江涛 发表于 2014-6-1 09:32
时间复杂度问题,嵌套循环越多复杂度就越高,运行时间就越长。以后写代码尽量避免循环嵌套。 ...

恩恩,现在已经明白了,感谢指导哈:handshake
回复 使用道具 举报
路过学习了……原来,代码不单单是要达到期望结果,还要注意这些问题……这大概就是老师课上讲的易读性和高效性吧。。
回复 使用道具 举报
在此学到了一课啊!
回复 使用道具 举报
肖岩 发表于 2014-6-1 23:44
在此学到了一课啊!

共同进步哈:handshake
回复 使用道具 举报
楼主在哪里上课
回复 使用道具 举报
不错,学习了,水仙花数原来是这么回事啊?
回复 使用道具 举报
我觉得你们两个的思考方式是不同的,老师的代码讲究的是求一个数的每个位,你的方法是用到了组合方式。老师的代码只有一个循环,而且循环数不是按照水仙花数量来决定的,而你的代码是按照水仙花束来决定循环次数,感觉两个代码的复用性都不是很大,但是我自我感觉,对于我个人来说我还是比较喜欢楼主的思考方式,实际上会选择老师的书写方式。
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马