黑马程序员技术交流社区

标题: "请大家告诉我,不是我想法怪异------"求解"水仙花数"的代码!!! [打印本页]

作者: idency    时间: 2014-5-31 21:59
标题: "请大家告诉我,不是我想法怪异------"求解"水仙花数"的代码!!!
昨天老师留了一题,求"水仙花数",昨天我也自己顺利把代码敲了出来,今天上课发现老师跟我的不一样,但是我的代码也能完成需求;请各位大神从各个角度分析下子,两种方法各自的优缺点:
老师的:
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+"  ");
                        }
                }
        }
}


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

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

感谢,明白了:)
作者: 这个夏天的芬芳    时间: 2014-6-1 09:02
学习学习{:3_53:}
作者: idency    时间: 2014-6-1 09:03
提菩--空 发表于 2014-6-1 00:27
不知楼主有注意到毕老师说写代码的一些注意点。程序是让人看的,所以要尽可能的易读,代码尽可能的简化。你 ...

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

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

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

恩恩,现在已经明白了,感谢指导哈:handshake
作者: 编程学徙    时间: 2014-6-1 10:51
路过学习了……原来,代码不单单是要达到期望结果,还要注意这些问题……这大概就是老师课上讲的易读性和高效性吧。。
作者: 肖岩    时间: 2014-6-1 23:44
在此学到了一课啊!
作者: idency    时间: 2014-6-2 00:27
肖岩 发表于 2014-6-1 23:44
在此学到了一课啊!

共同进步哈:handshake
作者: 素质    时间: 2014-6-5 03:28
楼主在哪里上课
作者: 明日辉煌    时间: 2014-6-5 06:48
不错,学习了,水仙花数原来是这么回事啊?
作者: wuhyoung    时间: 2014-6-5 08:46
我觉得你们两个的思考方式是不同的,老师的代码讲究的是求一个数的每个位,你的方法是用到了组合方式。老师的代码只有一个循环,而且循环数不是按照水仙花数量来决定的,而你的代码是按照水仙花束来决定循环次数,感觉两个代码的复用性都不是很大,但是我自我感觉,对于我个人来说我还是比较喜欢楼主的思考方式,实际上会选择老师的书写方式。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2