【发布时间】:2011-10-12 04:58:40
【问题描述】:
我遇到了一个挑战,即使用 for 循环以最简单的方式打印出 7 的倍数(非负数)到第 50 个倍数。
我想出了这个(忽略数据类型)
for(int i = 0; i <= 350; i += 7)
{System.out.println(i);}
另一个人想出了这个
for(int i=0;i <=50; i++)
{
System.out.println(7*i);
}
不过,我觉得sn-ps这两个代码还可以进一步优化。如果真的可以请告诉。一个比另一个有什么优点/缺点?
【问题讨论】:
-
你想优化这个?输出部分将花费大约 99.99% 的时间,而实际的数学运算花费的时间太少,甚至连想是否优化它的想法都没有,更不用说如何优化了。等到你证悟,意识到所有这些,甚至更多你不应该担心的理由时,你已经花费了无数次的时间来进行这些计算,成千上万次。浪费时间的方式;)
-
有 for(int i=0; i
-
最快的执行是展开循环并打印每个数字:
System.out.println("0"); System.out.println("7"); System.out.println("14"); ...。但是你在挑战的前提下排除了这一点。 :-P 但是,“人类最简单的方法”可能意味着许多不同的事情;我的意思是“最容易维护”和/或“通过查看代码最容易理解正在发生的事情”,而不是“最快”。 -
@delnan:我可以找到我第一次听到“理发减肥”的评论。
标签: java optimization loops